关于字符输入流中read方法传一个字符数组的问题
老师您好,视频中只讲了一个一个读取字符的方法,但是我查了文档,还有int read(char[] cbuf),可以传入一个字符数组的办法。于是我试了一下,问题是这样的:
当这个字符数组开的比较小,比如15时,传入的数据就会和预期不相同(不是乱码)。而如果数组再开大一点,则又和预期相同了。请问老师,这里的字符数组开的大和小有什么区别吗
char[] chars=new char[15];
public class TextFileSample {
/*FileReader读取并通过FileWriter写入文本文件案例*/
public void readTextFile(){
FileReader fr=null;
FileWriter fw=null;
File f1=new File("c:/java/demo.txt");
File f2=new File("c:/java/demo1.txt");
try {
fr=new FileReader(f1);
fw=new FileWriter(f2);
char[] chars=new char[15];
int len;
while((len=fr.read(chars))!=-1){
System.out.print(new String(chars));
fw.write(chars);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fw.close();
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}14
收起
正在回答
1回答
同学你好,在最后一次读取时,当获取的数据不够15时,就会从第一行去获取数据,从而满足15的长度将数据写入到demo1.txt文件中。建议同学调整write()方法,如下所示:

write(byte[] b, int off, int len)方法是将指定byte数组中从off开始的len个字节写入到文件。

比如:fw.write(chars,0,len);是将字节数组chars中前len个字节写入到文件。
祝学习愉快!
2023版Java工程师
- 参与学习 人
- 提交作业 8790 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星