簡體   English   中英

關於Java File Reader的問題

[英]Question about Java File Reader

我在FileReader類上遇到了一些問題。

如何在經過的行中指定偏移量,以及如何告知何時停止? 假設我希望它遍歷.txt文件中的每一行,但只有100-200行然后停止?

我該怎么做? 現在我正在使用ReadLine(),但是我不認為有一種方法可以指定偏移量。

任何快速幫助都非常感謝。 謝謝。

  1. 你不能 FileReader一次讀取一個字符或一次讀取一行。 顯然,您可以編寫自己的代碼來擴展或包裝它,以跳到不需要的行。

  2. 旁白:請謹慎使用FileReader或FileWriter-它們使用默認的LOCALE字符集。 如果要強制使用字符集,請使用OutputStreamWriter或InputStreamReader。

Writer w = new FileWriter(file)可以替換為Writer w = new OutputStreamWriter(new FileOutputStream(file),“ UTF-8”); <===看看如何設置字符集。

  1. 另一種選擇:如果您有FIXED-WIDTH文本,則查看RandomAccessFile,它使您可以查找任何位置。 除非您有固定寬度的文本或要跳到一行的索引,否則這對您沒有多大幫助。 但這很方便:)

讀取所有行,但使用另一個變量來計算您所在的行。 如果您不想處理的行(例如,在第100行之前),請呼叫continue如果您不想處理更多的行(在第200行之后),請break

沒有一種方法可以告訴讀者僅讀取某些行,您可以使用計數器來完成。

try { 
    BufferedReader in = new BufferedReader(new FileReader("infilename")); 
    String str; 
    int lineNumber = 0;

    while ((str = in.readLine()) != null) { 
        lineNumber++;

        if (lineNumber >= 100 && lineNumber <= 200) {
            System.out.println("Line " + lineNumber + ": " + str);
        }
    } 

    in.close(); 
} catch (IOException e) { } 
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
for(int i=0;i<100;i++,in.readLine()){}
String line101 = in.readLine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM