2010-03-19 35 views
1

我遇到了FileReader类的一些问题。关于Java文件读取器的问题

我该如何在它所经过的行中指定偏移量,以及如何告诉它何时停止? 比方说,我希望它通过.txt文件中的每一行,但只有行100-200,然后停止?

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

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

+1

java.io.FileReader不具有的readLine()方法。 java.io.BufferedReader的确。我假设你的意思是BufferedReader? – 2010-03-19 19:41:59

回答

2

阅读所有的行,但使用另一个变量来计算你在哪一行。如果您处于不想处理的行(例如,在第100行之前),请拨打continue,如果您不想处理更多行(在第200行之后),请拨打break

+0

当然。谢谢。 – 2010-03-19 20:07:44

3
  1. 你不行。 FileReader一次读取一次或一行字符。显然,你可以编写自己的代码来扩展或包装它以跳过不需要的行。

  2. 另一方面:小心使用FileReader或FileWriter - 它们使用默认的LOCALE字符集。如果你想强制一个字符集使用OutputStreamWriter或InputStreamReader。实施例

作家W =新的FileWriter(文件)可以通过 Writer来替换W =新OutputStreamWriter(新FileOutputStream中(文件), “UTF-8”); < ===看看我可以如何设置字符集。

  1. 替代方法:如果您有固定宽度文本,请查看RandomAccessFile,它可以让您寻找任何位置。除非您有固定宽度的文本或索引跳至一行,否则这对您无能为力。但它很方便:)
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) { } 
0
BufferedReader in = new BufferedReader(new FileReader("foo.in")); 
for(int i=0;i<100;i++,in.readLine()){} 
String line101 = in.readLine();