项目场景:
Cannot run program "dir d:\": CreateProcess error=2, 系统找不到指定的文件。
问题描述
提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:
public static void main(String [] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder();
Process process = builder.command("dir d:\\").start();
InputStream inputStream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
原因分析:
即使我把第三行语句改为下面的,仍然出错
Process process = builder.command("cmd.exe /c dir d:\\").start();
解决方案:
后来我看许多人都遇到这种情况,但是没有人说解决方案的,有人就直接放弃了:
所以我又试了各种方式,终于解决了这个问题,这两种方案执行都没有问题.提供给遇到这种问题的朋友一种参考
方法一:
public static void main(String [] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder();
List<String> list = new ArrayList<>();
list.add("cmd.exe");
list.add("/c");
list.add("dir");
list.add("d:\\");
Process process = builder.command(list).start();
InputStream inputStream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}
方法二:
public static void main(String [] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder();
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd.exe /c dir d:\\");
InputStream inputStream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream,"gb2312"));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
}