2014-10-17 2 views
0

Я пытаюсь прочитать несколько строк файла txt в Java, и я не могу понять, как заставить его читать следующую строку. Я пробовал цикл while, и когда я запускаю свою программу, ничего не выходит. То, что я сделал, было 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 "- это унаследованный класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется, чтобы любой, кто ищет эту функцию, использовал метод split' String' или 'java.util. regex'. "] (http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html) – durron597

+0

Что такое' TextFileInput'? – Hagai

+0

Вы могли видеть это: http://stackoverflow.com/questions/5868369/how-to-read-a-large-text-file-line-by-line-using-java – Massimo

ответ

-1

Вы можете сделать свою линию чтения в цикле в то время, как хорошо. Ниже приведена довольно типичная реализация, которая читает каждую строку файла до 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

+0

Нет, подождите, я понял. Спасибо за помощь. – user3371154

+0

У меня вопрос. Когда я пытаюсь напечатать массив вне цикла while, я получаю только первую строку, и когда я печатаю ее внутри цикла while, я получаю каждую строку, разделенную так, как я ее хочу. Является ли массив не содержать значения в? Мне нужен массив, чтобы потом удалить все, что не 8 цифр, а затем сортировать эти действительные даты. Мне жаль беспокоить вас. – user3371154