java實現單級資料夾和多級資料夾的複製
阿新 • • 發佈:2021-02-04
技術標籤:java基礎
單級資料夾的複製
public class file9 {
public static void main(String[] args) throws IOException {
File src = new File("C:\\case");//源
String name = src.getName();
//System.out.println(name);
File destfolder = new File("C:\\itcast", name);//目的
if (!destfolder.exists()) {
destfolder.mkdir();
}
File[] files = src.listFiles();
for (File srcfile : files) {
String name1 = srcfile.getName();
System.out.println(name1);
File destFile = new File(destfolder, name1);
copy (srcfile, destFile);
}
}
private static void copy(File srcfile, File destFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte [] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
bos.close();
bis.close();
}
}
多級資料夾的複製
public class file10 {
public static void main(String[] args) throws IOException {
File srcFile = new File("C:\\itcast");//源
File destFile = new File("C:\\case");//目的
copy(srcFile, destFile);
}
private static void copy(File srcFile, File destFile) throws IOException {//複製資料夾
if (srcFile.isDirectory()) {//是目錄,遞迴
String name = srcFile.getName();
File newFolder = new File(destFile, name);
if (!newFolder.exists()) {
newFolder.mkdir();
}
File[] files = srcFile.listFiles();
for (File file : files) {
copy(file, newFolder);
}
} else {//是檔案,直接複製
File newFile = new File(destFile, srcFile.getName());
copyFile(srcFile, newFile);
}
}
private static void copyFile(File srcfile, File destFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
bos.close();
bis.close();
}
}