1

我在使用 FileReader 类时遇到了一些问题。

如何在它通过的行中指定偏移量,以及如何告诉它何时停止?假设我希望它遍历 .txt 文件中的每一行,但只有第 100-200 行然后停止?

我该怎么做?现在我正在使用 ReadLine() 但我认为没有办法指定偏移量。

非常感谢任何快速帮助。谢谢。

4

4 回答 4

3
  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 ,它可以让您找到任何位置。除非您有固定宽度的文本或要跳到一行的索引,否则这对您没有多大帮助。但它很方便:)
于 2010-03-19T19:43:40.753 回答
2

阅读所有行,但使用另一个变量来计算您所在的行。continue如果您在不想处理的行(例如,在第 100 行之前)以及break不想再处理任何行(在第 200 行之后),请致电。

于 2010-03-19T19:39:04.213 回答
1

没有办法告诉读者只阅读某些行,您可以使用计数器来做到这一点。

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) { } 
于 2010-03-19T19:45:35.797 回答
0
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
for(int i=0;i<100;i++,in.readLine()){}
String line101 = in.readLine();
于 2010-03-19T19:49:22.067 回答