使用 FileInputStream 和 FileOutputStream 进行文件复制
出现一个奇怪的问题,请大家解释一下
源文件文本:
This is test file for copying files by java
目标文件文本:
This is test file for copying files by javav
代码如下
FileInputStream input=new FileInputStream("C:\\users\\auxu\\desktop\\a.txt");
FileOutputStream output1=new FileOutputStream("C:\\users\\auxu\\desktop\\c.txt");
byte[] buffer=new byte[2];
int i=0;
while(input.available()>0){
input.read(buffer);
//System.out.println(buffer[0]+"\t"+buffer[1]);
output1.write(buffer);
System.out.println(++i);
}
为什么目标文件的文本会多出一个v呢?
如果在声明buffer的时候长度设为64(或者更大的2的N次幂),文本就会正确拷贝,后面的长度以NULL补充
------解决方案--------------------
FileInputStream input=new FileInputStream("C:\\users\\auxu\\desktop\\a.txt");
FileOutputStream output1=new FileOutputStream("C:\\users\\auxu\\desktop\\c.txt");
int i=0;
while(input.available()>0){
byte[] buffer=new byte[2];
input.read(buffer);
//System.out.println(buffer[0]+"\t"+buffer[1]);
output1.write(buffer);
System.out.println(++i);
}
试下
------解决方案--------------------
FileInputStream input=new FileInputStream("C:\\users\\auxu\\desktop\\a.txt");
FileOutputStream output1=new FileOutputStream("C:\\users\\auxu\\desktop\\c.txt");
byte[] buffer=new byte[2];
int i=0;
int size = 0;
while(input.available()>0){
size = input.read(buffer);
//System.out.println(buffer[0]+"\t"+buffer[1]);
output1.write(buffer,0,size);
System.out.println(++i);
}
这样就不会有这个问题的啊。