2013-06-11 5 views
0

Недавно я начал изучать, как использовать ssh. Я использую Ganymed SSH2, чтобы создать файл в/bin и записать в него слова. Неверное имя файла (Test74024010477125945txt) -thejh помогло мне исправить это, и в нем ничего не записано! -не фиксированнойGanymed SSH2, создавая файл и записывая файл в определенный каталог

Код:

private void sshconnectActionPerformed(java.awt.event.ActionEvent evt) { 
    String host = phoneip.getText(); 
    String username = "root"; 
    String password = passwd.getText(); 

    Connection conn = new Connection(host); 
    try { 
     conn.connect(); 
    } catch (IOException ex) { 
     Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex); 
     progress.setText("Connection Failed"); 
    } 
    // Done connection stuffs and instance 
    try { 
     boolean isAuthenticated = conn.authenticateWithPassword(username, password); 
    } catch (IOException ex) { 
     Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex); 
     progress.setText("Authentication failed"); 
    } 

    try { 
     Session sess = conn.openSession(); 
     sess.execCommand("cd /bin"); //useless i believe 
    } catch (IOException ex) { 
     Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex); 
     progress.setText("Session failed"); 
    } 

    try { 
     SFTPv3Client client = new SFTPv3Client(conn); 
     File tmpFile = new File("Test.txt"); 
     FileWriter fw = new FileWriter(tmpFile); 
     fw.write("this is a test"); 
     fw.flush(); 
     fw.close(); 
     //temporary file 

     SFTPv3FileHandle handle = client.createFile("/bin/" + tmpFile.getName()); 
     FileInputStream fis = new FileInputStream(tmpFile); 
     byte[] buffer = new byte[1024]; 
     int i=0; 
     long offset=0; 

     while ((i = fis.read(buffer)) != -1) { //start writing to file 
      client.write(handle,offset,buffer,0,i); 
          offset+= i; 
     } 
     //write file at /bin 

     client.closeFile(handle); 
     if (handle.isClosed()) progress.setText("Done!");; 
      client.close(); 

    } catch (IOException ex) { 
     Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex); 
     progress.setText("SFTP failed"); //failure 
    } 

} 

Есть вероятность того, что я, возможно, написал неправильно?

ответ

1

Всегда полезно прочитать документацию перед использованием материала или, по крайней мере, когда вы заметите, что материал не работает так, как вы хотите, чтобы он работал. Так, let's have a look at the documentation of the method you're using:

имя нового файла будет генерироваться путем конкатенации префикса, пять или больше внутренне сгенерированных символов, и суффикс

Имя создаваемого файла начинается с «Test », появляется последовательность случайных символов, и заканчивается на« txt ». Что не так?

В случае, если вы хотите, файл с именем Test.txt, сделайте следующее:

File tmpFile = new File("Test.txt"); 

Создание экземпляра FileWriter затем следует создать файл.

+0

Ах спасибо, я исправил одну проблему сейчас. Но я до сих пор оставил текст в файле – junyi00

+0

@ junyi00: Он только не записывается в файл на ssh-сервере или не записывается в локальный временный файл? – thejh

+0

Файл, как представляется, не существует в локальном файле, содержащем банку – junyi00

Смежные вопросы