2014-10-17 92 views
0

我想讀取多行的Java文本文本文件,我不知道如何讓它讀取下一行。我試過了一段時間循環,當我運行我的程序時,什麼都沒有出來。我做的是while (line != null) {,所以它可以讀取下一行,但我沒有運氣讓它完成任務。在Java中使用StringTokenizer讀取多行

這是文本文件,如何讀取

20141003 
20131105 
19990205 
20080304,20080305,20080306 
19990206,hello,20141001,200003 
20050505 
July 
November,August 
19640503 
19980707 
19642199 
20141013 
import java.util.*; 

public class Tokens1 { 
    public static TextFileInput myFile; 
    public static StringTokenizer myTokens; 
    public static String[] list; 
    public static String line; 


    public static void main(String[] args) { 
    myFile = new TextFileInput("project1.txt"); 
    line = myFile.readLine(); 
    myTokens = new StringTokenizer(line, ","); 

    list = new String[myTokens.countTokens()]; 

    int i = 0; 
    while (myTokens.hasMoreTokens()) { 
     list[i] = myTokens.nextToken(); 
     i++; 
    } 

    for (int j = 0; j < list.length; j++) 
     System.out.println(list[j]); 
    } 

} 
+0

[「'StringTokenizer'是一個保留了兼容性的遺留類,儘管它在新代碼中的使用不受歡迎。建議任何尋求該功能的人都使用String或java.util的split方法。 regex'包代替。「](http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) – durron597 2014-10-17 19:05:33

+0

什麼是'TextFileInput'? – Hagai 2014-10-17 19:09:19

+0

你可以看到這一點: http://stackoverflow.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java – Massimo 2014-10-17 19:12:02

回答

-1

你可以做你行while循環讀爲好。以下是一個相當典型的實現,它讀取文件的每一行,直到eof。我不確定爲什麼你的while循環實現不起作用,所以發佈你的代碼會有幫助。

while ((line = reader.readLine()) != null) 
{ 
    myTokens = new StringTokenizer(line, ","); 

    list = new String[myTokens.countTokens()]; 

    int i = 0; 

    while (myTokens.hasMoreTokens()) 
    { 
     list[i] = myTokens.nextToken(); 
     i++; 
    } 
} 

我想第二個使用split()的概念。

+0

我仍然只獲得了它打印出第一行。 – user3371154 2014-10-17 19:24:44

+0

不用等我拿到了。謝謝您的幫助。 – user3371154 2014-10-17 19:26:55

+0

我有一個問題。當我嘗試在while循環外面打印數組時,我只能得到第一行,而當我在while循環中打印它時,我將每行都按照我想要的方式分開。數組沒有保存值嗎?我需要該數組稍後刪除不是8位數字的任何內容,然後對這些有效日期進行排序。我很抱歉打擾你。 – user3371154 2014-10-17 20:15:17