2010-05-04 76 views
0

我正在編寫一個程序,該程序使用scp在較大的java程序中複製文件。現在,程序凍結了,而scp正在複製文件,這可能需要幾分鐘的時間,所以我希望能夠顯示scp的進度,或者至少可以使用終端窗口scp進展顯示!有什麼建議麼?將scp的狀態欄顯示在Java窗口中

+0

你如何啓動scp? – 2010-05-05 00:15:25

回答

2

scp寫入STDOUT並刷新輸出。如果你管輸出,你可能能夠從管道讀取輸出,但我的猜測是1)scp不會將進度條打印到管道上,或者2)如果你可以做1,那麼輸出只會有意義你在java窗口中重新實現一個pty或類似的東西。

但是,您可以嘗試使用期望模塊調用scp並模仿終端的工作方式,並且您可能會假裝scp認爲其作爲終端運行。

最後,(這可能是最好的答案),不要使用scp,找到一個直接鏈接到openssh協議的java庫來導入用scp傳輸文件。

2

當你說「程序凍結」時,我的猜測是你的意思是一個Swing UI凍結了。如果是這樣,請在後臺線程中啓動scp並向用戶顯示一個不確定的進度條。

0

使用SwingWorker調用「啓動scp」以獲取主線程並讓GUI再次更新。

要獲得實際進度,您需要調查由scp打印的字符。我相信它保持一個ASCII進度條,然後可以用Java進行復制。您可能想要將「-v」添加到scp,讓它變得更健談。