1.复制文件路径下所有文件至另一个目录
/**
* 复制文件夹路径下所有文件至另一个目录
* 包含子文件夹中的文件
*
* @param sourceFolder 源文件夹路径
* @param newFolder 新文件夹路径
*/
public static void copyFolder(String sourceFolder, String newFolder) {
File[] fileList = new File(sourceFolder).listFiles();
if (fileList != null) {
for (File f : fileList) {
if (f.isFile()) {
copyFile(f, new File(newFolder + File.separator + f.getName()));
} else if (f.isDirectory()) {
File newFolderFile = new File(newFolder + File.separator + f.getName());
if (!newFolderFile.exists()) {
newFolderFile.mkdirs();
}
copyFolder(sourceFolder + File.separator + f.getName(),
newFolder + File.separator + f.getName());
}
}
}
}
/**
* 复制文件
*
* @param sourceFile 源文件
* @param newFile 新文件
*/
private static void copyFile(File sourceFile, File newFile) {
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(newFile)) {
byte[] buf = new byte[2048];
int bytesRead;
while ((bytesRead = fis.read(buf)) != -1) {
fos.write(buf, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
}
}
2.删除文件路径下所有文件
/**
* 删除文件路径下所有文件
*
* @param file 待删除的文件(或文件路径)
*/
public static void deleteDir(File file) {
if (file.isFile()) {
//删除文件
file.delete();
} else {
File[] files = file.listFiles();
if (files == null) {
//删除空文件夹
file.delete();
} else {
for (File f : files) {
//递归删除非空文件夹
deleteDir(new File(f.getAbsolutePath()));
}
file.delete();
}
}
}
3.递归获取目录下包括子目录下全部的文件路径(包括子目录的子目录)
/**
* 递归获取目录下包括子目录下全部的文件路径(包括子目录的子目录中的文件路径)
*
* @param file 根目录
* @param resultFileName 文件路径list
* @return 所有文件路径
*/
public static List<String> recursionFilePath(File file, List<String> resultFileName) {
File[] files = file.listFiles();
// 判断目录下是不是空的
if (files == null) {
return resultFileName;
}
for (File f : files) {
// 判断是否文件夹
if (f.isDirectory()) {
resultFileName.add(f.getPath());
// 调用自身,查找子目录
recursionFilePath(f, resultFileName);
} else {
resultFileName.add(f.getPath());
}
}
return resultFileName;
}