我需要运行一个批处理文件,该文件已位于我的 Java 包中。下面是我的代码。
public class ScheduleTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
Process exec = Runtime.getRuntime().exec("test.bat");
}
}
test.bat 位于 scheduletest
包内,ScheduleTest
类也位于其中。下面是包结构。
我怎样才能做到这一点?
编辑
这是我的批处理文件的内容
echo hello;
pause
最佳答案
通常,当您的 IDE 编译源代码时,test.bat
应放置在包含二进制文件的文件夹中,保留相同的包结构,例如bin/scheduletest/test.bat
。假设如此,您可以使用类加载器加载批处理文件:
ClassLoader loader = ScheduleTest.class.getClassLoader();
URL resource = loader.getResource("scheduletest/test.bat");
Process exec = Runtime.getRuntime().exec(resource.getPath());
要读取进程的输出,您需要获取其输入流:
InputStream inputStream = exec.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
但是,最好为其提供一个资源目录,因为自动构建过程(例如 Ant 或 Maven)会在清理时删除该文件。
关于java - 如何使用 Java 代码运行 Java 包内的批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288678/