【问题标题】:Java can't save Output Stream to a fileJava 无法将输出流保存到文件中
【发布时间】:2013-05-28 19:44:40
【问题描述】:

此代码在计算机 A 上运行良好,但在计算机 B 上不起作用......我不明白为什么...... 没有例外或其他任何东西......在计算机A上创建了日志文件,在计算机B上没有创建日志文件。 计算机 A 和 B 具有相同的 Java 版本... 你有什么想法?

    String str = "cmd /C  dir tools>1.log";
    try {
        Runtime.getRuntime().exec(str);
    } catch (Exception e) {
        e.printStackTrace();
    }

PS 此代码在两台计算机上都可以正常工作

    String str = "cmd /C  dir tools";

【问题讨论】:

  • 您应该使用 Java 的内置文件 API。
  • 你检查权限了吗
  • 尝试退出字符串指定的命令但保持/K

标签: java stream output


【解决方案1】:

您必须打开进程的输出流才能正确地将输出保存到文件中。

您可以通过创建一个 Process 对象并将其保存到文件中来做到这一点:

Process p = Runtime.getRuntime().exec(str);
InputStreamReader reader = p.getInputStream();
BufferedReader buffer = new BufferedReader(reader);
String line = null;
while ((line = buffer.readLine() != null) {
  //write stuff to file here
}

【讨论】:

  • 我知道这种方法并且效果很好,但我不明白为什么我的方法不起作用
  • 我相信这在SO之前已经讨论过了,但是我找不到这篇文章。而是看这里:javaworld.com/jw-12-2000/jw-1229-traps.html?page=4 第 4.6 节应该解释一下
【解决方案2】:

按照 SLaks 的说法——使用内置文件 API 是您的最佳选择。 这是一般教程的link

使用这些 API 可以解决从计算机 A 到 B...到 C 等任何奇怪的环境问题。

【讨论】:

  • 好的,我知道,但我不明白为什么我的方法不起作用...你能解释一下我的情况有什么问题吗
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 2016-02-28
相关资源
最近更新 更多