如何从头到尾读取文件我的代码,
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());
}
答案 0 :(得分:3)
您可以使用RandomAccessFile类。要么只是从文件长度读取循环到0,要么使用一些方便的第三方包装,如http://mattfleming.com/node/11
答案 1 :(得分:1)
如果您需要按相反顺序打印行:
代码:
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()
的实施将无法按预期运作。它将返回类似对象类型和数字的内容。