关于字符输入流中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个字节写入到文件。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星