如何从头到尾读取文件?

时间:2011-12-28 09:49:08

标签: java io

如何从头到尾读取文件我的代码,

  try                
   {
      String strpath="/var/date.log";
      FileReader fr = new FileReader(strpath);
      BufferedReader br = new BufferedReader(fr);
      String ch;
      String[] Arr;
      do 
      {
        ch = br.readLine();
        if (ch != null)
        out.print(ch+"<br/>");   
      } 
      while (ch != null);
      fr.close();
    }
    catch(IOException e){
    out.print(e.getMessage());
  }

3 个答案:

答案 0 :(得分:3)

您可以使用RandomAccessFile类。要么只是从文件长度读取循环到0,要么使用一些方便的第三方包装,如http://mattfleming.com/node/11

答案 1 :(得分:1)

如果您需要按相反顺序打印行:

  1. 阅读所有要列出的行
  2. 反转他们
  3. 将它们写回来
  4. 代码:

    List<String> lines = new ArrayList<String>();
    String curLine;
    while ( (curLine= br.readLine()) != null) {
      lines.add(curLine);
    }
    Collections.reverse(lines);
    for (String line : lines) {
      System.out.println(line);
    }
    

答案 2 :(得分:0)

如果您不想使用临时数据(用于撤消文件),则应使用RandomAccessFile类。

在其他情况下,您可以读取并将整个文件存储在内存中,然后将其翻转。

List<String> data = new LinkedList<String>();

如果您需要按相反顺序排列,请输入:

out.print(ch+"<br/>");

DO

data.add(ch);

阅读完整个文件后,您可以使用

Collections.reverse(data);

如果您需要每个符号的顺序相反,您可以使用Character类型而不是String,而不是读取整行而只读取一个符号。 之后,只需反转您的数据。

P.S。要打印(例如,系统输出流),您应该迭代集合中的每个项目。

for (String line : data) {
   out.println(line);
}

如果您只使用out.print(data),则会调用data.toString()方法并打印出结果。标准toString()的实施将无法按预期运作。它将返回类似对象类型和数字的内容。