java 如何反复从第一行读取文件?
我在写一个要读取ini文件的程序,遇到了一个问题,希望和大家讨论一下。我的程序在文件中用下面的函数读取:BufferedReaderbufferedReader;buff...
我在写一个要读取ini文件的程序,遇到了一个问题,希望和大家讨论一下。
我的程序在文件中用下面的函数读取:
BufferedReader bufferedReader;
bufferedReader.readLine()
然而由于需要,我希望能把文件反复读取。
从编程的角度来说,反复读取文件,有什么简便的方法,除了关闭文件,在打开文件。
是否可以在打开文件的时候,反复从第一行读取文件?? 展开
我的程序在文件中用下面的函数读取:
BufferedReader bufferedReader;
bufferedReader.readLine()
然而由于需要,我希望能把文件反复读取。
从编程的角度来说,反复读取文件,有什么简便的方法,除了关闭文件,在打开文件。
是否可以在打开文件的时候,反复从第一行读取文件?? 展开
4个回答
展开全部
采用类java.io.RandomAccessFile允许使用同一个实例对象对同一个文件交替进行读写,而且读写的数据在文件中的位置可以指定。采用这个类读写文件内容的原理是将文件看做字节数组,并用文件指针指示当前位置。
构造方法RandomAccessFile(String name, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。参数mode:①"r",只读 ②"rw",可读可写 你这里只读的话就写"r"可以了
成员方法public void seek(long pos)throws IOException 将文件指针移到由参数pos指定的位置。当参数pos为0时,则文件指针移到文件的头部。
public fianl String readLine() throws IOException读取从当前位置到当前行结束的数据,并以字符串的形式返回。该成员方法会自动判断行结束标志符。在读取数据之后,当前文件指针移动到下一行数据开始之处。
所以呢你只要设置一个循环,第一个语句用readLine()方法,第二个语句用seek(0)将指针移到文件头部,这样就可以反复读取第一行的内容了
以下是这个类的部分方法摘要,可能对你有用
成员方法public int read() throws IOException从当前文件读入一个字节,并且将文件指针向前移动一个字节。
成员方法public final int readInt()throws IOException则是读取int型类型数据,这个类型占用4个字节,读取后文件指针自动移动到下一个数据开始的地方。在这里将int readInt()可以是double readDouble() char readChar()等等,只要将类型匹配就可以读取了
构造方法RandomAccessFile(String name, String mode) 创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。参数mode:①"r",只读 ②"rw",可读可写 你这里只读的话就写"r"可以了
成员方法public void seek(long pos)throws IOException 将文件指针移到由参数pos指定的位置。当参数pos为0时,则文件指针移到文件的头部。
public fianl String readLine() throws IOException读取从当前位置到当前行结束的数据,并以字符串的形式返回。该成员方法会自动判断行结束标志符。在读取数据之后,当前文件指针移动到下一行数据开始之处。
所以呢你只要设置一个循环,第一个语句用readLine()方法,第二个语句用seek(0)将指针移到文件头部,这样就可以反复读取第一行的内容了
以下是这个类的部分方法摘要,可能对你有用
成员方法public int read() throws IOException从当前文件读入一个字节,并且将文件指针向前移动一个字节。
成员方法public final int readInt()throws IOException则是读取int型类型数据,这个类型占用4个字节,读取后文件指针自动移动到下一个数据开始的地方。在这里将int readInt()可以是double readDouble() char readChar()等等,只要将类型匹配就可以读取了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为什么要反复读取同一个文件相同的内容?
是不是读取后保存在内存更加好呢?当然我不清楚你的具体需求。只是有点疑惑。
是不是读取后保存在内存更加好呢?当然我不清楚你的具体需求。只是有点疑惑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是否可以考虑将之争从新回到第一个位置呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有 mark 和 reset 方法
在读取一行之前,mark一下,
读取之后reset一下
就可以了
在读取一行之前,mark一下,
读取之后reset一下
就可以了
追问
for (int i=0; i<=100; i++) {
while ((temp= t1.readLine()) != null) {
t1.mark(1);
......................................
System.out.println("1");
}
t1.reset();
}
}
还是不太明白,我按照你的方法在读取的时候,用了mark和reset,如上,我发现while循环里,还是只能循环一次,读取文件一次。。你能不能给我举个详细的例子,我一定跟你设置最佳答案,谢谢啦
追答
BufferedReader in = new BufferedReader(new FileReader(
"123.txt"));
in.mark(10000);
String first = in.readLine();
System.out.println(first);
in.reset();
String second = in.readLine();
System.out.println(second);
in.close();
楼下说的也对,你为什么会有这样的需求。很奇怪
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询