今天想起文件复制代码,因为我曾经在网络看到一些文件复制的代码,我cpoy过来使用了一下,结果发现,复制之后的文件是空文件,而控制台却输出去正确,到底出现错误在哪里呢?
查了一下java API文件发现。
FileOutputStream的wirte方法可以实现文件复制
[img]http://dl.iteye.com/upload/attachment/290227/f7aed9a0-3473-308d-8909-7e94a5132a7c.jpg[/img]
首先我们应该将一个文件看做一个数组。
然后将这个数组的东西逐个写到另外一个文件中去,就可以实现全部复制了。
实现代码如下:
[color=red]
注意,千万不可以将文件关闭方法放进while中去,如果放进去的话,只能是复制了一个byte。打开副本只能得到一个一点。但是用肉眼看,就是一个空白文件。
[/color]
查了一下java API文件发现。
FileOutputStream的wirte方法可以实现文件复制
[img]http://dl.iteye.com/upload/attachment/290227/f7aed9a0-3473-308d-8909-7e94a5132a7c.jpg[/img]
首先我们应该将一个文件看做一个数组。
byte[] bytes=new byte[1024];
然后将这个数组的东西逐个写到另外一个文件中去,就可以实现全部复制了。
实现代码如下:
package com.qj87;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @author qinjie
* @file_name CopyFile.java
* @ctreate_time 2010-8-9 14:49
*/
public class CopyFile {
public static boolean copy(String location1,String location2){
try{
File file_in=new java.io.File(location1);
File file_out=new java.io.File(location2);
FileInputStream in1=new FileInputStream(file_in);
FileOutputStream out1=new FileOutputStream(file_out);
byte[] bytes=new byte[1024];
int c;
while((c=in1.read(bytes))!=-1){
out1.write(bytes,0,c);
}
in1.close();
out1.close();
return(true); //if sUCcess then return true
}
catch(Exception ex){
ex.printStackTrace();
return(false); //if fail then return false
}
}
public static void main(String[] args){
Boolean ff=copy("E:\\abc.jpg","D:\\abc.jpg");
if(ff==true)
System.out.println("+++++复制成功++++++");
else
System.out.println("------复制失败-----");
}
}
[color=red]
注意,千万不可以将文件关闭方法放进while中去,如果放进去的话,只能是复制了一个byte。打开副本只能得到一个一点。但是用肉眼看,就是一个空白文件。
[/color]