2016-03-16 4 views
1

Как бы напечатать элементы в этом случае, слова из файла. Моя программа в настоящее время принимает входные данные из файла с именем input, который содержит слова «один два три четыре галюмфа» именно так. На данный момент он перечислил каждое слово на отдельной строке, и как только он достигнет «galumph», он завершается, что я и хочу, но мне также хотелось бы, чтобы он отображал все элементы в файле перед чем-либо. Как мне это сделать? Я попытался сделать цикл while в самом начале, но получить ошибки. Какие-либо предложения?Печать строк текстового файла

import java.io.*; 
import java.util.Scanner; 
class EchoWords { 

public static void main(String[] args) throws FileNotFoundException { 
String word; 
String line; 
try { 
     File file = new File("input"); 
     Scanner s2 = new Scanner(file); 

while(s2.hasNext()) { 
    String s = s2.next(); 
    System.out.println(s); 

while(true) { 
    word = s2.next(); 
if(word.equals("galumph")) { 
    break; 
}else{ 
    System.out.println(word); 
    continue; 
    } 
    } 
    System.out.println("bye!"); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
    } 
    } 
} 
+2

Возможный дубликат [Чтение текстового файла в Java] (http://stackoverflow.com/questions/4716503/reading-a-plain-text-file-in-java) –

ответ

1

Если файл не слишком большой, вы можете прочитать все строки файла в один раз и хранить их в List:

String fileName = "filePath"; 
List<String> allLines = Files.readAllLines(Paths.get(fileName)); 

Вы можете перебирать строки по желанию:

//print all the lines 
for (String line : allLines) 
{ 
     System.out.println(line); 
} 

//print until galumph 
for (String line : allLines) 
{ 
    if ("galumph".equals(line)) 
    { 
      break; 
    } 
    else 
    { 
      System.out.println(line); 
    } 

} 

Этот подход имеет то преимущество, что вам необходимо прочитать ваш файл только один раз.