如何使用 Java 代码 运行 Java 包中的批处理文件?
How to run a batch file inside Java package using Java code?
我需要 运行 一个已经在我的 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
class 也位于其中。下面是包结构。
我怎样才能做到这一点?
编辑
这是我的批处理文件的内容
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 源代码文件夹中,否则我会将其移至项目的根目录,或者更好的是,创建一个 /resources 文件夹并将其放入那里。
然后您可以让 IDE 或构建系统将其复制到您的 bin
/build
。然后您现有的代码可以 运行 正确。
我需要 运行 一个已经在我的 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
class 也位于其中。下面是包结构。
我怎样才能做到这一点?
编辑
这是我的批处理文件的内容
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 源代码文件夹中,否则我会将其移至项目的根目录,或者更好的是,创建一个 /resources 文件夹并将其放入那里。
然后您可以让 IDE 或构建系统将其复制到您的 bin
/build
。然后您现有的代码可以 运行 正确。