黑马程序员技术交流社区
标题:
问题求助
[打印本页]
作者:
清心玉质
时间:
2013-8-9 15:42
标题:
问题求助
本帖最后由 清心玉质 于 2013-8-9 16:41 编辑
下面写了两段代码:
一个是创建文件,写了十行文字;
另一个是读取这十行文字。
问题就在readline这块,如果没有定义line= readline()的话,打印的是奇数行。
我要进黑马...1
我要进黑马...3
我要进黑马...5
我要进黑马...7
我要进黑马...9
为什么没有打印全部呢?
*/
public class BufferWriterDemo {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileWriter fw = new FileWriter("F:\\ai.txt");
BufferedWriter buw = new BufferedWriter(fw);
for (int x=0;x<10;x++)
{
buw.write("我要进黑马"+"..."+x);
buw.newLine();
}
buw.close();
}
}
class BufferedReaderDemo
{
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("F:\\ai.txt");
BufferedReader bur = new BufferedReader(fr);
while((bur.readLine())!=null)
{
System.out.println(bur.readLine() }
bur.close();
}
}
作者:
xkfxm
时间:
2013-8-9 16:03
class BufferedReaderDemo
{
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("F:\\ai.txt");
BufferedReader bur = new BufferedReader(fr);
String line = null;
while((line = bur.readLine())!=null)
{
System.out.println(line) ;
}
bur.close();
}
}
复制代码
楼主好,你的写入流成功了,在记事本文件中看到有十条数据;
但是读取的时候,你打印的是System.out.println(bur.readLine() ;
首先要明白,read方法的原理,它读取数据时会一次向后,当读到一个地方时,把读取到的数据打印,下次读取时会接着上一次的读取。
你判断的时候用的是(bur.readLine())!=null,此时已经读了第一行,但是打印的并不是这一行数据,而是又接着重新读取了一行,
所以导致了隔行的的错误。
更正后代码如上
希望帮到你 谢谢
作者:
崔一恒
时间:
2013-8-9 16:14
楼主的问题在你写的以下代码中:
while((bur.readLine())!=null) //这里读了一行
{
System.out.println(bur.readLine() } //这里又读了另一行
bur.close(); //?
}
复制代码
并且,楼主在关资源的时候写在了循环里面,我想是往这儿搬得时候写错的吧。
作者:
清心玉质
时间:
2013-8-9 16:40
谢谢大家,学习了~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2