私は複数のクライアントを含むアプリケーションを作成しています。あるクライアントが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で書かれているので、そのライブラリの開発者はライブラリなしでやろうとしていることを実行する方法を見つけなければなりませんでした。私はそれもやりたい私は、私が作ったものに私自身のファイル以外のファイルを付けるのは好きではありません。ですから、ライブラリを使用するように教えてください。私が探しているものではありません。
説明が必要な場合は、お尋ねください。
EDIT:私は応答を受け取るために、このコードを使用する場合:私のコマンドだけでエコーバックされます
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'と '' DELE')を実際に実行できると確信していますか?それは私にはほとんどないようです。どのような例外がスローされるか、またはサーバーからの応答は何ですか? – sarnold
これが正常かどうかはわかりませんが、DELEコマンドを書いた後、私は接続を通して確立された入力ストリームから68を受け取りました。編集:異なるコードでレスポンスを試した後、入力ストリームは私が書き込んだものをエコーバックします。 –
'68'?それは面白い。 [FTPステータスコードは3桁です。](http://www.ietf.org/rfc/rfc959.txt)。 – sarnold