win10如何通过java执行命令行将文件夹中(包括子文件夹)所有.java文件编译到指定文件夹中,并保留原先目录结构
2021/4/24 20:25:34
本文主要是介绍win10如何通过java执行命令行将文件夹中(包括子文件夹)所有.java文件编译到指定文件夹中,并保留原先目录结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1,问题描述
最近有一个需求,要通过命令行将一个文件夹下的所有java文件编译为class文件,包括子文件夹中的。
一开始找到一个命令:(表示将TestProjects目录下所有.java文件编译为class文件,并存放在目标文件夹中)
javac -d 目标文件夹 D:\TestProjects\*.java
但此命令不能编译子目录中的java文件
2,解决方法
遍历文件夹中所有文件,并用正则表达式匹配所有.java文件,匹配成功执行上述命令即可
/** * 将sourceFile所指文件夹中(包括子文件夹)所有java文件编译为class文件 * @param sourceFile * @param targetPath */ public static void compailJavaToClass(File sourceFile, String targetPath) { try { // 判断文件不为null或文件目录存在 if (sourceFile == null || !sourceFile.exists()){ return; } // 取得这个目录下的所有子文件对象 File[] files = sourceFile.listFiles(); // 遍历该目录下的文件对象 for (File f: files){ //判断子目录是否存在子目录,如果是文件则删除 if (f.isDirectory()){ compailJavaToClass(f, targetPath); }else { // System.out.println("开始执行命令: sonar-scanner"); // 打印文件名 String name = f.getName(); String path = f.getPath(); // .:任意字符,*:任意次数 // 这里表示匹配任意结尾为java的文件 String pattern = ".*java"; System.out.println("path: " + path); if(Pattern.matches(pattern, name)) { String cmd = "javac -d " + targetPath + " " + path; System.out.println(cmd); Process proc = Runtime.getRuntime().exec(cmd); } } } }catch (Exception e) { e.printStackTrace(); } }
测试效果
File file = new File("D:\\TestProjects\\TestForFindbugs"); GitUtil.compailJavaToClass(file, "D:\\TestProjects\\TestForFindbugs\\classes");// classes文件夹必须已经存在
这篇关于win10如何通过java执行命令行将文件夹中(包括子文件夹)所有.java文件编译到指定文件夹中,并保留原先目录结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)