慕粉3793179
2016-10-31 00:34
public static void CopyFileByFile(File preFile, File nexFile)throws IOException{
if(!preFile.exists()){
throw new IllegalArgumentException("文件"+preFile+"不存在");
}
if(!preFile.isFile()){
throw new IllegalArgumentException(preFile+"不是文件");
}
FileInputStream in=new FileInputStream(preFile);
FileOutputStream out=new FileOutputStream(nexFile);
byte[]bye=new byte[1024];
int b=in.read(bye, 0, bye.length);
while(b!=-1){
out.write(bye,0,b);
/*
* 这个方法的作用是把缓冲区的数据输出。
* 一般在读写流的时候,数据是先被读到了内存中,
* 再把数据写到文件中,当数据读完的时候不代表数据已经写完了,
* 因为还有一部分有可能会留在内存这个缓冲区中。
* 这时候如果调用了close()方法关闭了读写流,
* 那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。
*/
}
in.close();
out.close();
}
谢谢啦,太不仔细了
这个不是运行太卡,你这个是int b = in.read(bye,0,bye.length)读取文件的时候,不是写在while循环中,并不能进行判断文件是否读完。你都已经是死循环了,应该写到while循环中进行判断。你的代码写的是一直在nexFile文件中进行写操作。
把开辟的内存放大一些
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题