0
点赞
收藏
分享

微信扫一扫

Java、删除包语句

SPEIKE 2022-03-25 阅读 143


package pack1;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class DeletePackage {
    public static void main(String[] args) throws IOException {
        File rootDirectory = preparation();
        if (rootDirectory == null)
            System.out.println("初始准备失败!");
        else {
            addPackage(rootDirectory);
            deletePackage(rootDirectory);
            System.out.println("请于目录" + rootDirectory.getAbsolutePath() + "查看");
        }
    }

    /**删除包*/
    public static void deletePackage(File rootDirectory) throws IOException {
        for (File f : rootDirectory.listFiles())    //遍历根目录的所有子目录
            if (f.getName().matches(".*chapter.*")) //匹配子目录名是否为chapter
                for (File sourceFile : f.listFiles())   //遍历chapter下的文件和目录
                    if (sourceFile.getName().matches(".*java.*")) { //如果为java源文件
                        Scanner input = new Scanner(sourceFile);    //从源文件中创建输入流
                        StringBuilder stringBuilder = new StringBuilder();

                        if (input.hasNextLine()) input.nextLine();  //读取首行(带包行)
                        while (input.hasNextLine()) //读取其他行并添加进字符串构建器
                            stringBuilder.append(input.nextLine()).append("\n");

                        //源文件重新输入数据
                        outputData(sourceFile, stringBuilder.toString());
                    }
    }

    /**添加包*/
    private static void addPackage(File rootDirectory) throws IOException {
        for (File f : rootDirectory.listFiles())
            if (f.getName().matches(".*chapter.*"))
                for (File sourceFile : f.listFiles())
                    if (sourceFile.getName().matches(".*java.*")) {
                        Scanner input = new Scanner(sourceFile);
                        StringBuilder stringBuilder = new StringBuilder();

                        if (input.hasNextLine()) input.nextLine();
                        while (input.hasNextLine())
                            stringBuilder.append(input.nextLine()).append("\n");

                        outputData(sourceFile, "package " + f.getName() + ";\n" + stringBuilder);
                    }
    }


    /**输出数据*/
    public static void outputData(File file, String text) throws IOException {
        try(PrintWriter printWriter = new PrintWriter(file);) {
            printWriter.write(text);
        }
    }

    /**初始化目录和文件*/
    public static File preparation() throws IOException{
        File rootDirectory = new File("D:\\srcRootDirectory");
        if(rootDirectory.exists())
            return rootDirectory;   //根目录存在时返回根目录

        rootDirectory.mkdir();  //创建根目录
        createSubDirectories(rootDirectory, 1, 34); //创建子目录
        createOtherSubDirectories(rootDirectory, 1, 5); //创建其他子目录

        String parentFile = "D:\\JavaIDE程序\\JavaProject1\\src\\pack1";  //自己的带源文件的路径
        String[] sourceFiles = {"AddPackage.java", "ArrayIndexOutBoundsException.java", "DeleteText.java"};

        for (File f : rootDirectory.listFiles())    //遍历根目录下的子目录
            if (f.exists() && f.getName().matches(".*chapter.*"))     //如果目录存在且为chapter目录
                for (String fil : sourceFiles) {    //在此目录下创建源文件
                    Scanner input = new Scanner(new File(parentFile, fil));
                    while (input.hasNextLine())
                        createSourceFile(f, fil, input.nextLine() + "\n");
                }
        if (!rootDirectory.exists())
            return null;    //如果根目录创建失败,返回null
        for (File f : rootDirectory.listFiles())
            if (!f.exists()) return null;
        return rootDirectory;
    }

    /**创建其他子目录*/
    public static void createOtherSubDirectories(File rootDirectory, int origin, int end) {
        for (int i = origin; i <= end; i++) {
            File subDirectory = new File(rootDirectory, "exercise" + i);
            if (!subDirectory.exists()) subDirectory.mkdir();
        }
    }

    /**创建子目录*/
    public static void createSubDirectories(File rootDirectory, int origin, int end) {
        for (int i = origin; i <= end; i++) {
            File subDirectory = new File(rootDirectory, "chapter" + i);
            if (!subDirectory.exists()) subDirectory.mkdir();
            createOtherSubDirectories(subDirectory, 1, 5);
        }
    }

    /**创建源文件*/
    public static void createSourceFile(File parentFile, String fileName, String data) throws IOException {
        try(PrintWriter output = new PrintWriter(new FileOutputStream(new File(parentFile, fileName), true));) {
            output.write(data);
        }
    }
}

 


 

举报

相关推荐

0 条评论