Java的文件拷贝和文件删除
程序员文章站
2022-05-15 08:47:59
...
java没有拷贝函数,不能删除含有文件目录,需要自己实现。
public static boolean fileCopy(File src, File destDir){
if(!destDir.exists()){
destDir.setWritable(true);
destDir.setReadable(true);
boolean res = destDir.mkdirs();
if(!res){
LogMessageMgr.i(TAG, "FileCpoy mkdir failed:" + destDir.getPath());
return false;
}
}
if(src.isDirectory()){
File[] files = src.listFiles();
for(File file:files){
File destSubDir = new File(destDir.getPath() + File.separator + src.getName());
boolean res = fileCopy(file, destSubDir);
if(!res){
return false;
}
}
}else if(src.isFile()){
File dest = new File(destDir.getPath() + File.separator + src.getName());
dest.setWritable(true);
dest.setReadable(true);
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(src);
fos = new FileOutputStream(dest);
byte[] buffer = new byte[1024*64];
do{
int len = fis.read(buffer);
if(len < 0){
break;
}
if(len > 0){
fos.write(buffer, 0, len);
}
}while(true);
} catch (FileNotFoundException e) {
e.printStackTrace();
// 测试中发现rmnt这个文件在升级无法被替换,忽略这个异常。
LogMessageMgr.i(TAG, "FileCpoy ignore FileNotFoundException:" + e.getMessage());
} catch (IOException e) {
e.printStackTrace();
LogMessageMgr.i(TAG, "FileCpoy ignore FileNotFoundException:" + e.getMessage());
return false;
} finally{
try {
if(null != fis){
fis.close();
}
if(null != fos){
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
public static void fileDelete(File file){
if(file.isFile()){
file.delete();
}else if(file.isDirectory()){
File[] subFiles = file.listFiles();
for(File subFile:subFiles){
fileDelete(subFile);
}
file.delete();
}
}
上一篇: 4、java如何删除目录和文件