項目實踐中遇到Ftp傳輸問題,在這里做個專輯。
第一篇還是介紹一下sun提供的FtpClient.這個也是網(wǎng)上說的最多的,在這里我只是給出例程,不再做詳細的解釋。sun提供的FtpClient簡單宜用,不支持任何加密方式;并沒有提供相應的api,所以給我們調(diào)試帶來不便,與其說是sun足夠自信說這個組件簡單到不用api就可以完全滿足應用,還不如說不負責任。其實在開發(fā)中會遇到各種問題,實踐中就遇到上傳文件到一定數(shù)量級后傳輸會變慢(很慢),但程序并不報錯;用ftp客戶端桌面軟件測試發(fā)現(xiàn)連續(xù)傳輸1000個左右文件報錯率為4,可能FtpClient在開發(fā)時候?qū)Ξ惓2蹲讲蝗妗5绻谛?shù)據(jù)量和沒有用加密方式認證和傳輸?shù)那闆r下,F(xiàn)tpClient仍不失是一個很好的選擇。
下面是例程:
- public class TestFtpClient{
- /**
- *@paramargs
- */
- public static void main(String[]args){
- FtpClientftpClient;
- //server:FTP服務器的IP地址
- Stringserver= "127.0.0.1" ;
- //user:登錄FTP服務器的用戶名
- Stringuser= "username" ;
- //password:登錄FTP服務器的用戶名的口令
- Stringpassword= "password" ;
- //path:FTP服務器上的路徑
- Stringpath= "/path/" ;
- //要上傳本地文件路徑
- Stringfilename= "D:" +File.separator+ "test.txt" ;
- //上傳服務器上文件名
- StringftpFile= "test.txt" ;
- try {
- ftpClient= new FtpClient(server);
- //ftpClient.openServer(server,21);
- ftpClient.login(user,password);
- System.out.println( "Login......." );
- //path是ftp服務下主目錄的子目錄
- if (path.length()!= 0 )
- ftpClient.cd(path);
- //用2進制上傳
- ftpClient.binary();
- TelnetOutputStreamos= null ;
- FileInputStreamis= null ;
- os=ftpClient.put(ftpFile);
- Filefile_in= new File(filename);
- if (file_in.length()== 0 ){
- throw new Exception( "上傳文件為空!" );
- }
- is= new FileInputStream(file_in);
- byte []bytes= new byte [ 1024 ];
- int c;
- while ((c=is.read(bytes))!=- 1 ){
- os.write(bytes, 0 ,c);
- }
- System.out.println( "上傳文件成功!" );
- is.close();
- os.close();
- } catch (FileNotFoundExceptione){
- e.printStackTrace();
- } catch (IOExceptione){
- e.printStackTrace();
- } catch (Exceptione){
- e.printStackTrace();
- }
- }
- }
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
