我正在編寫涉及多個客戶端的應用程序。一個客戶端使用FTP將文件上傳到服務器,然後另一個客戶端下載該文件並將其刪除。我使用FTP服務器作爲中間人來交換信息,因爲我不希望用戶必須前移端口。我已經想出瞭如何上傳文件,但我無法弄清楚如何刪除文件。使用FTP刪除文件的命令是:使用Java從FTP服務器刪除文件
DELE <filename>
我試過這樣做,但沒有成功。這裏是我試過的代碼:我有一種感覺,<文件名>我提供的可能是錯誤的,因爲我並沒有包括在路徑的目錄名
public static void deleteFile(String name) throws IOException
{
URL url = new URL("ftp://a1111111:[email protected]/public_html/misc/screenshots/picture.png;type=i");
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(url.openConnection().getOutputStream()));
writer.write("DELE picture.png");
writer.flush();
}
。但是,由於我明確告訴URL中文件的路徑,所以我不太確定我應該爲<文件名>輸入什麼內容。
我已經閱讀了本網站上有關與此非常相似的問題的其他問題,並且所有的答案都告訴了使用一個庫。問題是,大多數這些庫都是用純Java編寫的,因此該庫的開發人員必須找出一種方法來實現我在沒有庫的情況下要做的事情。我也想這樣做。我不喜歡附加額外的文件,除了我自己的東西,我做的。所以,請不要告訴我使用庫 - 這不是我要找的。
如果您需要任何澄清,請詢問!
編輯:如果我使用此代碼收到答覆:
byte[] response = new byte[conn.getInputStream().available()];
conn.getInputStream().read(response);
System.out.println("Response: " + new String(response));
我的命令只是獲取回送:
Response: DELE test1.png
你確信你可以從一個有趣的'URL'對象實際運行多個FTP命令('GET' _and_'DELE')嗎?這對我來說似乎不太可能。拋出什麼異常或服務器的回覆是什麼? (如果你還沒有運行Wireshark來觀察事務) – sarnold 2012-04-17 02:52:25
我不確定這是否正常,但是在寫入DELE命令後,我從通過連接建立的輸入流中收到68。編輯:在用不同的代碼嘗試響應之後,輸入流只是迴應我寫入的內容。 – 2012-04-17 03:02:59
'68'?那很好笑。 [FTP狀態碼長度爲三位數字。](http://www.ietf.org/rfc/rfc959.txt)。 – sarnold 2012-04-17 03:08:49