读书人

JAVA IO 有关问题

发布时间: 2013-10-23 11:39:13 作者: rapoo

JAVA IO 问题
本帖最后由 yinan9 于 2013-10-18 16:54:15 编辑 使用 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);


}



这样就不会有这个问题的啊。

读书人网 >J2SE开发

热点推荐