2013-07-04 5 views
13

मैं जेएसएच का उपयोग कर एसएफटीपी के साथ एक सर्वर में दो फाइल अपलोड करने की कोशिश कर रहा हूं। यदि निर्देशिका खाली है तो फ़ाइलों को अपलोड करने के लिए यह ठीक काम करता है लेकिन मैं एक ही फ़ाइल को और अधिक अपलोड करना चाहता हूं (बस एक आईडी को अंदर बदलना) लेकिन मैं यह नहीं समझ सकता कि यह कैसे करें। जेएसएच में ओवरवाइट नामक कुछ स्थिर पैरामीटर है लेकिन मुझे इसका उपयोग नहीं किया जा सकता है।जेएसएच का उपयोग कर जावा एसएफटीपी अपलोड, लेकिन वर्तमान फ़ाइल को ओवरराइट कैसे करें?

कोई भी मुझे यह दिखाने की देखभाल करता है कि मुझे यह सेटिंग कैसे जोड़नी चाहिए?

यह मेरे वर्तमान कोड है:

public void upload() { 
    try { 
    JSch jsch = new JSch(); 
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT); 
session.setPassword(SFTPPASS); 
java.util.Properties config = new java.util.Properties(); 
config.put("StrictHostKeyChecking", "no"); 
session.setConfig(config); 
session.connect(); 
channel = session.openChannel("sftp"); 
channel.connect(); 
channelSftp = (ChannelSftp) channel; 
channelSftp.cd(SFTPWORKINGDIR); 

    File f1 = new File("ext_files/" + FILETOTRANSFER1); 
channelSftp.put(new FileInputStream(f1), f1.getName()); 
File f2 = new File("ext_files/" + FILETOTRANSFER2); 
channelSftp.put(new FileInputStream(f2), f2.getName()); 

channelSftp.exit(); 
session.disconnect(); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
    } 
} 

उत्तर

17

मैं JSch उपयोग नहीं किया है लेकिन इसके बारे में दिखता से देखते हैं अतिभारित पुट की अनेक विधियों का जहां एक "मोड के योग के साथ अपने वर्तमान हस्ताक्षर से मेल खाता है "पैरामीटर और वहाँ ChannelSftp वर्ग में तीन स्थिर मोड पैरामीटर हो रहा है (अधिलेखित = 0, फिर से शुरू = 1, जोड़ने = 2) तो आप का उपयोग करने के लिए सक्षम होना चाहिए:

channelSftp.put(new FileInputStream(f1), f1.getName(), ChannelSftp.OVERWRITE);

संबंधित मुद्दे