麻烦老师帮我看一下问题出在哪里了?
来源:4-7 自由编程
Michael_2020
2020-03-14 17:40:39
控制台输出没有问题,文件中会在中间多了一个换行呢?
另外,麻烦老师看一下这样写是否合理?谢谢。
package com.yito.hello;
import java.io.*;
public class Hello {
//写入文件的方法
public void tranWriteByBuf(File file){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write("\r你好吗?\n");
bw.write("\r我很好!\n");
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//从文件读出内容的方法
public void tranReadByBuf(File file){
try {
BufferedReader br = new BufferedReader(new FileReader(file));
int n=0;
while ((n=br.read())!=-1){
System.out.println(br.readLine());
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Hello hello = new Hello();
hello.tranWriteByBuf(new File("hello.txt"));
hello.tranReadByBuf(new File("hello.txt"));
}
}2回答
同学你好,因为写入的数据需要存储到文件中,所以new File对象。如果同学在tranWriteByBuf方法中直接将其写入到hello.txt.那么在main方法中就可以直接调用了。


如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小脸
2020-03-14
同学你好,
1、\r表示回车,写入到文本文件中就是一个回车换行的作用,在进行文本读取时,会默认换行。
2、去掉\r后,在进行循环判断时,不应该调用read()方法作为判断条件,因为该方法表示读一个字符,然后在进行循环体中,执行br.readLine()为读取一行,因为已经读取第一个字符了,所以会输出为“好吗?”。修改如下:

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题