代码&bug
原因:
问题定位于,文件写入输出流的时候设置长度每次都写1000个字节;
导致不足1000个字节也会写入大量的空字符(可恨的是记事本打开不可见,NodePad++打开才会看到(NuLL))
刚开始以为是编码问题,试了几个编码发现问题依旧。后来发现在就在最后出来空字符应该是在写文件时出现了异常。请参考以下两段代码
//有问题的代码try {
FileOutputStream fos = new FileOutputStream(filePath);
byte[] b = new byte[1024];
while((in.read(b)) != -1){
//问题在此,因为写的时候没设置长度每次都写1024个字节,导致最后不足1024个字节也会写入大量的空字符
fos.write(b);
}
in.close();
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//修改后的代码try {
FileOutputStream fos = new FileOutputStream(filePath);
byte[] b = new byte[1024];
int len=-1;
while((len=in.read(b)) != -1){
//增加起始长度 每次都写入实际读到的长度,所以不会出现空字符。
fos.write(b,0,len);
}
in.close();
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解决后效果如下: