2016.8.5
若是文件就拷贝,
若是文件夹就深层遍历拷贝。
public static void copy(String fileName,String newFileName){
if(fileName==newFileName){
System.out.println("文件名不能重复");
return ;
}
File file = new File(fileName);
File newFile = new File(newFileName);
if(!file.exists()){
System.out.println("文件不存在,拷贝失败!");
}
else if(file.isFile()){
copyFile(fileName,newFileName);
}
else if(file.isDirectory()){
newFile.mkdirs();
for(String name:file.list()){
System.out.println(name);
copy(fileName+"\\"+name,newFileName+"\\"+name);
}
}
}
具体拷贝方法
不过这个只适合拷贝文本,拷贝图片之类的就不能成功拷贝了,文件大小会变,也无法正常打开
拷贝任意格式文件参见下一个方法
public static void copyFile(String fileName,String newName){
File file = new File(fileName);
File newFile = new File(newName);
if(!file.exists()){
System.out.println("文件不存在,拷贝失败!");
}
else if(file.isDirectory()){
System.out.println("这不是一个文件,拷贝失败!");
}
else{
//只能拷贝文本,拷贝其他并不能成功,大小会变,内容也乱了
BufferedReader br=null;
BufferedWriter bw=null;
try {
if(!newFile.exists()){
newFile.createNewFile();
}
FileReader reader = new FileReader(file);
FileWriter writer = new FileWriter(newFile);
br = new BufferedReader(reader);
bw = new BufferedWriter(writer);
String line=br.readLine();
while(line!=null){
bw.write(line);
bw.newLine();
line=br.readLine();
bw.flush();
}
System.out.println("拷贝成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这个方法可以拷贝任意格式的文件
public static void copyFile(String fileName,String newName){
File file = new File(fileName);
File newFile = new File(newName);
if(!file.exists()){
System.out.println("文件不存在,拷贝失败!");
}
else if(file.isDirectory()){
System.out.println("这不是一个文件,拷贝失败!");
}
else{
//可以拷贝任意格式的文件
FileInputStream input=null;
FileOutputStream output=null;
byte[] b=new byte[128];
int length;
try {
if(!newFile.exists()){
newFile.createNewFile();
}
input = new FileInputStream(file);
output = new FileOutputStream(newFile);
while(true){
length=input.read(b);
if(length==-1){
break;
}
output.write(b,0,length);
output.flush();
}
System.out.println("拷贝成功!");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(input!=null){
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(output!=null){
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}