import java.io.*;
public class FileUtils {
public static Boolean deleteFile(File file){
//判断文件不为null或文件目录存在
if (file == null || !file.exists()){
System.out.println("文件删除失败,请检查文件路径是否正确");
return false;
}
//取得这个目录下的所有子文件对象
File[] files = file.listFiles();
//遍历该目录下的文件对象
for (File f: files){
//打印文件名
String name = file.getName();
System.out.println(name);
//判断子目录是否存在子目录,如果是文件则删除
if (f.isDirectory()){
deleteFile(f);
}else {
f.delete();
}
}
//删除空文件夹 for循环已经把上一层节点的目录清空。
file.delete();
return true;
}
//定义一个文件目录的层级
static int level;
public static void parseFile(File file){
//每次调用层级加1
level++;
//如果文件为null 或者文件不存在终止遍历
if (file == null || !file.exists()){
return;
}
//获得文件对象的子文件对象列表
File[] files = file.listFiles();
//遍历文件并打印文件名字
for(File f:files){
//层级缩进
for (int i = 0; i < level ; i++) {
System.out.print("t");
}
String name = f.getName();
System.out.println(name);
//判断这些子文件是否是目录
boolean directory = f.isDirectory();
//如果是目录的话接着遍历
if (directory){
parseFile(f);
}
}
level--;
}
public static Boolean checkFileIsExist(String baseUrl, Integer templateType){
Boolean returnStr = false;
//文件夹
if (checkFolder(baseUrl + templateType)) {
if (templateType == 1){
Boolean check1 = checkFile(baseUrl + templateType + "/" + "结题报告.doc");
Boolean check2 = checkFile(baseUrl + templateType + "/" + "立项报告.doc");
if (check1 == false || check2 == false){
returnStr = false;
}else {
returnStr = true;
}
}else if (templateType == 2){
Boolean check1 = checkFile(baseUrl + templateType + "/" + "立项报告.doc");
if (check1 == true){
returnStr = true;
}else {
returnStr = false;
}
}else if (templateType == 3){
Boolean check1 = checkFile(baseUrl + templateType + "/" + "立项结题报告.doc");
Boolean check2 = checkFile(baseUrl + templateType + "/" + "立项结题报告书.doc");
if (check1 == false || check2 == false){
returnStr = false;
}else {
returnStr = true;
}
}else if (templateType == 4){
Boolean check1 = checkFile(baseUrl + templateType + "/" + "立项+结题.doc");
if (check1 == true){
returnStr = true;
}else {
returnStr = false;
}
}
}else {
//文件夹不存在
returnStr = false;
}
return returnStr;
}
private static Boolean checkFile(String url){
//文件
File file = new File(url);
if (!file.exists()){
//文件不存在
return false;
}else {
return true;
}
}
private static Boolean checkFolder(String url){
//文件夹
File folder = new File(url);
if (!folder.exists() && !folder.isDirectory()) {
//文件夹不存在
return false;
}else {
return true;
}
}
public static void copyDir(File srcDir, File destDir) throws IOException {
// 因为 是文件夹才递归,文件的话 是直接复制(write操作)不回去调用递归,
// 所以 两个File类参数:srcDir和destDir都是文件夹
//第一步:先把srcDir这个文件夹,复制过去
//新增的文件夹的path=destDir文件夹绝对路径+srcDir文件名
File newDir = new File(destDir.getAbsolutePath() + "/" + srcDir.getName());
newDir.mkdirs();//创建文件夹
//对源文件夹进行listFiles()操作,并逐一判断
File[] subFiles = srcDir.listFiles();
for (File tempFile : subFiles) {
//如果是文件夹,递归之,其中srcDir更新为当前的tempFile,destDir更新为newDir
if (!tempFile.isFile()) {
copyDir(tempFile, newDir);
//是文件,就复制文件(read+write)
}else{
//是文件,就复制文件(read+write)
InputStream is = new FileInputStream(tempFile);
OutputStream os = new FileOutputStream(newDir + "/" + tempFile.getName());
byte[] car = new byte[10000];
int len = 0;
while (-1 != (len = is.read(car)))
os.write(car, 0, len);
is.close();
os.flush();
os.close();
}
}
}
}