2016-04-10 58 views
0

我想用多行讀取多個文件並逐個讀取文件。並從每一個文件,我希望每一個第三行被存儲在一個字符串數組(即行號1,4,7,10,....等等必須存儲在字符串數組),我試過這個代碼,但它仍然將所有三個文件的每一行都保存在數組中。但我想跳過兩行,並在數組中添加每第三行。 幫我在這裏。讀取文件時需要跳過的行號(相關閱讀更多)

這裏是代碼

import java.io.*; 
import java.util.*; 

public class music { 
public double xx[] = new double[5]; 
public String songs[] = new String[40000]; 
//public static File f = new File("C:/Users/Prashant/Desktop/OCEAN/f.txt"); 
public static File[] fileList1 = new File("C:/Users/Prashant/Desktop/MUSIC/Categories").listFiles(); 

public void selectsongs() throws IOException, FileNotFoundException, ArrayIndexOutOfBoundsException //, NoSuchElementException 
{ 
    int i; 
    int lineno = 1; 
    int songno = 0; 
    String t = ""; 
    xx[0]=51; 
    xx[1]=10; 
    xx[2]=60; 
    xx[3]=60; 
    xx[4]=60; 

    if (xx[0] >= 50 && xx[1] < 50 && xx[2] >= 50 && xx[3] >= 50 && xx[4] >= 50) { 
     for (i = 0; i < 3; i++) { 
      Scanner scanner1 = new Scanner(fileList1[i]); 
      lineno = 1; 
      while (scanner1.hasNextLine()) { 
       t = ""; 
       if (lineno % 3 == 1) { 
        t = t + scanner1.nextLine(); 
        songs[songno] = t; 
        songno++; 
       } 
       lineno++; 
      } 
     } 
    } 
    for(int j=0;j<songno;j++) 
    { 
     System.out.println(songs[j]); 
    } 
} 
public static void main(String args[]) 
{ 

} 
} 

回答

1

Scanner將僅由一條線提前,如果你打電話nextLinehasNextLine不影響狀態。所以你必須在while循環的每一次迭代中調用nextLine,但只在適當的時候將返回值放在數組中。

+0

非常感謝它的作品,但有一個問題,它沒有讀取所有的文件必須有一些問題與3個文件。我會檢查出來的。非常感謝你 –

+0

你的循環說'for(i = 0; i <3; i ++){'所以它只會看3個文件。用'fileList1.length'代替'3',或者更好地將循環變成'for(文件file:fileList1){Scanner scanner1 = new Scanner(file); ''。 –