2011-02-05 93 views

回答

7

掃描儀:

for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext();) { 
    String line = sc.nextLine(); 
    ... // do something with line 
} 
+1

喜歡各種各樣的方法,`掃描儀`提供。謝謝。簡單而乾淨。 – 2011-02-05 19:30:07

7

看看Scanner這個課。

它是Java 5中添加,使閱讀字符串和文件更容易,比老FileReaders和的FileInputStream鏈(沒有更多new BufferedReader(new FileReader())只是爲了得到一個readLine方法)。

在掃描儀類,你可以使用nextLine方法來一次讀取一條線,但它也有很多的UTIL方法在文件中找到原語和正則表達式。

+1

代碼示例:http://www.kodejava.org/examples/241.html – Maxym 2011-02-05 19:26:32

+0

掃描儀似乎確實是正確的選項。謝謝。 – 2011-02-05 19:32:10

+0

@Maxym:這個答案需要用一個例子來補充。謝謝。 – 2011-02-05 19:33:11

4

您可以使用BufferedReader,這樣的事情: -

try { 
    BufferedReader input = new BufferedReader(new FileReader(new File("c:\\test.txt"))); 
    try { 
     String line = null; 
     while ((line = input.readLine()) != null) { 
      System.out.println(line); 
     } 
    } finally { 
     input.close(); 
    } 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} 
2

如果你願意利用3rd party libraries,然後工具類如GuavaFilesFileUtilsApache Commons IO使閱讀文件非常簡單。

下面的示例(其中File file = new File("path/to/file.txt"))將文本文件的所有行讀入List,並將整個文件讀入String。

番石榴:

List<String> lines = Files.readLines(file, Charsets.UTF_8); 

String contents = Files.toString(file, Charsets.UTF_8); 

阿帕奇百科全書IO:

List<String> lines = FileUtils.readLines(file, "UTF-8"); 

String contents = FileUtils.readFileToString(file, "UTF-8") 

我的建議(截至2013年)是番石榴,這是一個現代的,乾淨的,積極維護庫。它通常比Apache Commons的東西質量更高。

當然,僅僅爲此添加番石榴是沒有意義的,因爲它是一個相對較大的圖書館。另一方面,而不是今天在一個Java項目中使用番石榴將是愚蠢的。 :-)

不可否認JDK現在提供對這一特定目的有所足夠的工具(Scanner);當something like this是替代方案時,使用第三方庫來讀取文件更加合理。

0

您還可以使用包裝在BufferedReader中的InputStreamReader(您使用InputStream創建FileInputStream)來簡單地讀取文件。

1

你可以試試apache的FileUtils。像

for(String line: FileUtils.readLines(file)) { 
    System.out.println(line); 
} 
相關問題