CopyFile and Directory By channel
2013-08-28 17:32
405 查看
public class CopyFilebyChannel {
public static void main(String[] args) throws IOException {
/*
* @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1
*/
copyDirectiory("/home/vergil/Desktop/111", "/home/vergil/Desktop/222");
}
public static long copyFile2(File srcFile, File destDir, String newFileName) {
long copySizes = 0;
if (!srcFile.exists()) {
System.out.println("源文件不存在");
copySizes = -1;
} else if (!destDir.exists()) {
System.out.println("目标目录不存在");
copySizes = -1;
} else if (newFileName == null) {
System.out.println("文件名为null");
copySizes = -1;
} else {
try {
FileChannel fcin = new FileInputStream(srcFile).getChannel();
FileChannel fcout = new FileOutputStream(new File(destDir,
newFileName)).getChannel();
long size = fcin.size();
fcin.transferTo(0, fcin.size(), fcout);
fcin.close();
fcout.close();
copySizes = size;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return copySizes;
}
// 复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir)
throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
// copyFile2(new File(sourceFile), new File(targetFile), sourceFile);
copyFile2(sourceFile, new File(targetDir), sourceFile.getName());
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}
public static void main(String[] args) throws IOException {
/*
* @return 实际复制的字节数,如果文件、目录不存在、文件为null或者发生IO异常,返回-1
*/
copyDirectiory("/home/vergil/Desktop/111", "/home/vergil/Desktop/222");
}
public static long copyFile2(File srcFile, File destDir, String newFileName) {
long copySizes = 0;
if (!srcFile.exists()) {
System.out.println("源文件不存在");
copySizes = -1;
} else if (!destDir.exists()) {
System.out.println("目标目录不存在");
copySizes = -1;
} else if (newFileName == null) {
System.out.println("文件名为null");
copySizes = -1;
} else {
try {
FileChannel fcin = new FileInputStream(srcFile).getChannel();
FileChannel fcout = new FileOutputStream(new File(destDir,
newFileName)).getChannel();
long size = fcin.size();
fcin.transferTo(0, fcin.size(), fcout);
fcin.close();
fcout.close();
copySizes = size;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return copySizes;
}
// 复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir)
throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new
File(new File(targetDir).getAbsolutePath()
+File.separator+file[i].getName());
// copyFile2(new File(sourceFile), new File(targetFile), sourceFile);
copyFile2(sourceFile, new File(targetDir), sourceFile.getName());
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
}
相关文章推荐
- Invalid configuation file. File "**********" was created by a VMware product with more feature than this version of VMware Workstation and cannot be
- Howto change all file and directory in a folder to 777?
- Java源码——使用JFileChooser获取文件及目录信息(Obtain file and directory information)
- directory and file tools
- Copy .vdi file by changing UUID in VirtualBox
- call by reference and copy/restore
- HTTP Error 404.17 – Not Found, The requested content appears to be script and will not be served by the static file handler
- file and directory
- Unity Vuforia项目打包XCode出现Failed to Copy File Directory from。。。/VuforiaPluginLoader.mm'
- tar(child):bzip2:Cannot exec: No such file and directory
- How to Copy Archivelog Files From ASM to Filesystem and vice versa
- 【IBM-WALA】Step by Step : use WALA to generate System Dependency Graph PDF and Dot File (Mac)
- linux/unix rules for naming file and directory
- IO-->File and Directory class
- How can I get the logical valume by the datafile names and ASM disks?
- 4 - Directory and File Organization
- Python_API_File and Directory Access_os.path.normcase
- search a file from directory and get storage directorys from android device(i use tablet here)
- Sensitive directory/file Integrity Monitoring and Checking