2015-11-23 32 views
0

嗨我有一個場景,我需要從兩個不同的位置下載一組文件,這些文件與我的本地計算機具有相同的名稱。將com.jcraft.jsch.ChannelSftp.get(String src,String dst)覆蓋現有文件?

實施例:

  • 遠程位置之一:用戶/ temp1目錄/ sample.txt的
  • 遠程位置處的兩個:USER1/TEMP2/sample.txt的
  • 本地機器路徑:用戶3/TEMP3/

我正在使用java和com.jcraft.jsch.ChannelSftp.get(String src,String dst)方法來執行此任務。我的疑問是,當我執行第一個動作時,將位置一個sample.txt文件下載到我的本地文件夾,並執行第二個動作,即將位置兩個文件下載到同一個本地文件夾。第一個下載的文件會被附加第二個遠程sample.txt文件數據,還是將其替換爲新文件,或者是否會創建一個名稱爲sample(1).txt的新文件?

回答

2

如果您檢查javadoc,你會看到,對於get(src, dest)方法的默認模式是OVERWRITE,所以您的默認第一個文件將被第二個選項被重寫。不同模式的含義是:

  • OVERWRITE - 覆蓋現有文件(如有)。

  • RESUME - 恢復中斷上傳/下載。這隻傳輸超出現有目標文件長度的源文件部分。

  • APPEND - 文件傳輸模式:追加到現有文件,如果有的話。

+0

感謝您的答覆和javaDoc鏈接Gergely Basco。我無法找到將模式更改爲APPEND的方法,我的意思是我沒有找到像setMode(APPEND)或setMode(2)或get(src,dst,APPEND)那樣更改模式的方法?你可以按照正確的方法來路由 –

+1

你只需要使用正確的'get'方法來實現這一點。例如: 'get(src,dst,null,2);'// progressmonitor設置爲null,你不需要這個&mode = 2意味着追加 –

+0

它是'.put(src,dst,SftpChannel.APPEND) '[put(String src,String dst,int mode)'](http://epaul.github.io/jsch-documentation/javadoc/com/jcraft/jsch/ChannelSftp.html#put%28java.io。 InputStream,%20java.lang.String,%20int%29)過載。 –