Java IO流查看/删除文件,生成Java类

简介: 方便日常工作中需要对文件的批量操作

@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();
        }
    }
}
相关文章
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
74 9
|
1月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
143 57
|
3天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
29天前
|
Java
java 中 IO 流
Java中的IO流是用于处理输入输出操作的机制,主要包括字节流和字符流两大类。字节流以8位字节为单位处理数据,如FileInputStream和FileOutputStream;字符流以16位Unicode字符为单位,如FileReader和FileWriter。这些流提供了读写文件、网络传输等基本功能。
50 9
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
50 8
|
1月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
73 17
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
133 4
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
76 2
|
1月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
58 4