2010-10-21 95 views
1
public class FtpDownloadDemo { 
public static void Connection(String filename) { 
    FTPClient client = new FTPClient(); 
    FileOutputStream fos = null; 

    try { 
     client.connect("ftp.domain.com"); 
     client.login("admin", "secret"); 

     // 
     // The remote filename to be downloaded. 
     // 
     ftpClient.setFileType(FTP.IMAGE_FILE_TYPE); 

     fos = new FileOutputStream(filename); 

     // 
     // Download file from FTP server 
     // 
     client.retrieveFile("/" + filename, fos); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (fos != null) { 
       fos.close(); 
      } 
      client.disconnect(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

}FTP文件下載問題。獲取只讀文件例外

我使用此代碼下載一些圖片文件。但在fos = new FileOutputStream(filename);獲取file.jpeg是隻讀文件異常。我正在使用commons.net jar文件進行ftp連接。請幫助我,我錯了。

+0

這是如何與Android關聯的?文件名定義在哪裏?它可能指向您沒有寫入權限的位置。 – kgiannakakis 2010-10-21 13:01:58

+0

實際上這是一個演示。在我的Android應用程序中,我爲此做了一個函數。並傳遞文件名作爲參數。 – Andy 2010-10-21 13:23:38

+2

您需要傳遞一個可寫入位置的有效文件名,例如在清單中聲明適當權限後的外部存儲目錄。嘗試在沒有FTP的情況下將一些虛擬數據寫入文件輸出流,您可能會得到相同的錯誤。 – 2010-10-21 15:08:56

回答

1

我在創建類時提供了主機,用戶名和密碼,然後調用它來下載文件。那些人是對的,它可能是試圖寫入根源或其他東西。我一直在爲這個客戶使用commons-net-2.2.jar。

public void GetFileFTP(String srcFileSpec, String destpath, String destname) { 
    File pathSpec = new File(destpath); 
    FTPClient client = new FTPClient(); 
    BufferedOutputStream fos = null; 
    try { 
     client.connect(mhost); 
     client.login(muser, mpass); 

     client.enterLocalPassiveMode(); // important! 
     client.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE); 
     fos = new BufferedOutputStream(
           new FileOutputStream(pathSpec.toString()+"/"+destname)); 
     client.retrieveFile(srcFileSpec, fos); 
     }//try 
     catch (IOException e) { 
      Log.e("FTP", "Error Getting File"); 
      e.printStackTrace(); 
      }//catch 
     finally { 
      try { 
       if (fos != null) fos.close(); 
       client.disconnect(); 
       }//try 
       catch (IOException e) { 
        Log.e("FTP", "Disconnect Error"); 
        e.printStackTrace(); 
        }//catch 
       }//finally 
    Log.v("FTP", "Done");  
    }//getfileFTP 

希望這會有所幫助。

phavens