@TOC
应用场景
查看:通过IO流用递归的方式查看文件目录中有哪些名称类似于Controller.java的文件
删除:通过IO流用递归的方式删除文件目录中名称类似于Controller.java的文件
生成:检索字符串中的路径信息,获取类名,包名。创建基本的java类
代码示例
查看和删除的流程一样,只不过一个做删除处理,一个做字符串拼接处理,代码如下
/**
* 测试查看/删除
* @param url 指定的文件路径
* @param s 指定的特殊字符
*/
public static void delOrCatFcileByName(String url, String s) {
// 创建文件
File grandpaFile = new File(url);
// 检查该对象是否是文件夹
if(grandpaFile.isDirectory()) {
// 返回该目录中的文件和目录
File[] fatherFiles = grandpaFile.listFiles();
if (fatherFiles.length > 0) {
// 循环返回的文件
for (File sonFile : fatherFiles) {
// 继续调用自身进行判断(递归)
delOrCatFcileByName(sonFile.getPath(),s);
}
} else {
// 进行自定义判断,判断自己是否包含字符串
if(grandpaFile.getName().endsWith(s)&&grandpaFile.length()>12) {
System.out.println("删除文件夹"+grandpaFile.getName());
//删除包含特殊字符的文件
grandpaFile.delete();
}
}
}
else {
if(grandpaFile.getName().endsWith(s)&&grandpaFile.length()>12) {
//字符串拼接,获取文件夹下所有的文件
controllerStr+= grandpaFile+"\n";
//删除查到的文件名
System.out.println("删除文件"+grandpaFile.getName());
grandpaFile.delete();
}
}
}
生成Java类文件参照完整代码示例
完整代码展示
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
/**
* @version: 1.8
* @Author: LY
* @description:
* @date: 2022 12 12 17:44
*/
public class Test {
public static String absolutelyPath = "G:\\ly_workspace\\java\\kdyg_server\\manager_kdyg\\src\\main\\java\\cn\\saturn\\web\\";
// public static String absolutelyPath = "E:\\demo\\demoNext\\";
public static String tempPackage = "package cn.saturn.web.";
private static String controllerStr="";
public static void main(String[] args) {
//文件删除/显示示例
delOrCatFcileByName("G:\\ly_workspace\\java\\web_test\\src\\main\\java\\cn\\saturn","Controller.java");
// System.out.println(controller2);
//文件创建示例
//createFileByName("G:\\ly_workspace\\java\\kdyg_server\\manager_kdyg\\src\\main\\java\\cn\\saturn","");
String file="";
if (StringUtils.isNotBlank(controllerStr)){
String[] split = controllerStr.split("\n");
for (int i = 0; i < split.length; i++) {
file = split[i].replace
("G:\\ly_workspace\\java\\web_test\\src\\main\\java\\cn\\saturn\\web\\","");
System.out.println(file);
String path = file.substring(0, file.lastIndexOf("\\"));
String pathReplace = path.replace('\\', '.');
String fileName = file.substring(file.lastIndexOf("\\")+1, file.length() - 5);
System.out.println("相对路径:"+path);
System.out.println("绝对路径:"+absolutelyPath+path);
System.out.println("包名:"+tempPackage+pathReplace+";");
System.out.println("文件名:"+fileName+".java");
System.out.println("类名:"+fileName);
System.out.println();
createFileByName(absolutelyPath+path,tempPackage+pathReplace+";",fileName);
}
}
}
/**
* 测试查看/删除
* @param url 指定的文件路径
* @param s 指定的特殊字符
*/
public static void delOrCatFcileByName(String url, String s) {
// 创建文件
File grandpaFile = new File(url);
// 检查该对象是否是文件夹
if(grandpaFile.isDirectory()) {
// 返回该目录中的文件和目录
File[] fatherFiles = grandpaFile.listFiles();
if (fatherFiles.length > 0) {
// 循环返回的文件
for (File sonFile : fatherFiles) {
// 继续调用自身进行判断
delOrCatFcileByName(sonFile.getPath(),s);
}
} else {
// 判断自己是否包含特殊字符
if(grandpaFile.getName().endsWith(s)&&grandpaFile.length()>12) {
// System.out.println("删除文件夹"+grandpaFile.getName());
// 删除包含特殊字符的文件
//grandpaFile.delete();
}
}
}
else {
if(grandpaFile.getName().endsWith(s)&&grandpaFile.length()>12) {
controllerStr+= grandpaFile+"\n";
/*System.out.println("删除文件"+grandpaFile.getName());
grandpaFile.delete();*/
}
}
}
public static void createFileByName(String url, String packageName,String name) {
try {
File file = new File(url);
file.mkdirs();
if (file.getParentFile().exists()) {
// 文件名
String filename = name+".java";
FileWriter fw = new FileWriter(file+"\\" + filename,true);
// FileWriter 如果文件名 的文件不存在,先创建再读写;存在的话直接追加写,关键字true表示追加
String originalLine = packageName+"\n" +
"\n" +
"/**\n" +
" * @version: 1.8\n" +
" * @Author: LY\n" +
" * @description:\n" +
" * @date: 2022 12 13 16:15\n" +
" */\n" +
"public class "+name+" {\n\n\n" +
"}";
//写入内容
fw.write(originalLine);
// 关闭写文件
fw.close();
//读取文件内容
FileReader fr = new FileReader(file+"/"+filename);
char[] a = new char[50];
// 读取数组中的内容
fr.read(a);
System.out.println("---------输出文件内容---------");
System.out.println(a);
fr.close();
}else{
System.out.println("创建目录失败");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}