java-FTP編程

來源:互聯網
上載者:User

      因為需要監控伺服器某個目錄下是否產生了javacore檔案,而又不想在伺服器上跑代理程式,也就想了個“歪點子”:定時使用FTP服務,查看該目錄下檔案情況。

      一開始使用了sun.net.ftp.FtpClient包,它是內建在JDK中的,使用起來還算簡單,但是正是這種簡單,導致它的功能並不強。比如僅提供列舉檔案清單,不提供檔案相關資訊。

      後來發現有個org.apache.commons.net.ftp.FTP包,可以列舉檔案的很多屬性,如大小,所有者等。於是二話不說就開始試用,當時直接就把原來的sun類幹掉,直接用apache的類,卻發現根本沒法用,調用listFiles總是獲得null,照搬網上的方法都不行。翻來覆去怎麼都搞不定,網上關於此問題的解決方案似乎也不行。而且還很複雜。最後無奈之下只能回退,幸虧eclipse有history功能,節省了不少時間。

      昨天晚上看了apache的FTP包介紹,似乎功能非常強,所以今天上午再次研究了一下,無意中發現網上有個夥計自己建的類裡面有個把使用過程中的命令輸出到控制台的做法,想到這樣可以輔助尋找原因。由此發現了問題所在:串連伺服器後對伺服器發送了SYST命令,伺服器返回了錯誤:

SYST
215 UNIX Type: L8 Version: BSD-44
PORT 127,0,0,1,94,51
501 IP Address for data destination doesn't match client's.

      由此想到串連伺服器的方式問題,於是在串連之後調用一次enterLocalPassiveMode方法。

      最終通過。

      最後附上原帖地址:《使用org.apache.commons.net.ftp包開發FTP用戶端,實現進度彙報,實現斷點續傳,中文支援》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.