让 scp 的状态栏出现在 Java 窗口中

发布于 2024-08-31 00:28:44 字数 123 浏览 5 评论 0原文

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

I'm writing a program that uses scp to copy files in a bigger java program. As it stands now, the program freezes up while the scp is copying the file, which can take a few minutes, so I'd like to be able to display the progress of the scp or at the very least get the terminal window with the scp progress to show up! Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏璃陌 2024-09-07 00:28:44

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

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

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

scp writes to STDOUT and flushes the output. If you pipe the output, you may be able to read the output from the pipe, but my guess is that 1) scp wont print the progress bar to a pipe or 2) if you can do 1, the output will only make sense if you re-implement a pty or similar in a java window.

However, you could experiment with an expect-like module calling scp and mimic how the terminal works and you may be able to fake scp into thinking its being run as a terminal.

Finally, (and this is probably the best answer), don't use scp, find a java library to import that directly links into openssh's protocols for transferring files with scp.

围归者 2024-09-07 00:28:44

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

When you say, "the program freezes up", my guess is that you mean that a Swing UI freezes up. If so, launch scp in a background thread and show the user an indeterminate progress bar.

无人问我粥可暖 2024-09-07 00:28:44

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

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

Invoke the "launch scp" using SwingWorker to get it of the main thread and let the GUI update again.

To get actual progress you will need to investigate the characters printed by scp. I believe it maintains an ASCII progress bar, you can then replicate in Java. You may want to add "-v" to scp to let it be more talkative.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文