【问题标题】:Getting scp's status bar to appear in a Java window让 scp 的状态栏出现在 Java 窗口中
【发布时间】:2011-02-15 17:13:51
【问题描述】:

我正在编写一个程序,它使用 scp 在更大的 java 程序中复制文件。就目前而言,程序在 scp 复制文件时冻结,这可能需要几分钟,所以我希望能够显示 scp 的进度,或者至少获得带有scp进度显示!有什么建议吗?

【问题讨论】:

    标签: java progress-bar scp


    【解决方案1】:

    scp 写入 STDOUT 并刷新输出。如果您通过管道输出,您可能能够从管道读取输出,但我的猜测是 1)scp 不会将进度条打印到管道或 2)如果您可以执行 1,则输出只有在以下情况下才有意义你在 java 窗口中重新实现了一个 pty 或类似的东西。

    但是,您可以尝试使用类似期望的模块调用 scp 并模仿终端的工作方式,并且您可以伪造 scp 使其认为它是作为终端运行的。

    最后,(这可能是最好的答案),不要使用 scp,找到一个要导入的 java 库,它直接链接到 openssh 的协议,用于使用 scp 传输文件。

    【讨论】:

      【解决方案2】:

      当您说“程序冻结”时,我的猜测是您的意思是 Swing UI 冻结。如果是这样,请在后台线程中启动 scp 并向用户显示一个不确定的进度条。

      【讨论】:

        【解决方案3】:

        使用 SwingWorker 调用“launch scp”以获取主线程并让 GUI 再次更新。

        要获得实际进展,您需要调查 scp 打印的字符。我相信它维护一个 ASCII 进度条,然后您可以在 Java 中复制。您可能需要在 scp 中添加“-v”以使其更健谈。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多