关于Java File Reader的问题

时间:2010-03-19 19:36:09

标签: java line readline filereader

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

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

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

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

4 个答案:

答案 0 :(得分:3)

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

  2. 抛开:小心使用FileReader或FileWriter - 它们使用默认的LOCALE字符集。如果要强制使用字符集,请使用OutputStreamWriter或InputStreamReader。实施例

  3. Writer w = new FileWriter(file)可以替换为 Writer w = new OutputStreamWriter(new FileOutputStream(file),“UTF-8”); < ===看看如何设置字符集。

    1. 另一种选择:如果您有FIXED-WIDTH文本,那么请查看RandomAccessFile,它可以让您搜索到任何位置。除非您有固定宽度的文本或索引以跳到某一行,否则这对您没有多大帮助。但它很方便:))

答案 1 :(得分:2)

读取所有行,但使用另一个变量来计算您所在的行。如果您在不想处理的行(例如,在第100行之前)和continue,当您不想再处理任何行(在第200行之后)时调用break

答案 2 :(得分: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) { } 

答案 3 :(得分:0)

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