誰かが私を助けてくれることを願っています(もう一度)。
非常に多数の smmll ファイル (4000 以上) があり、それぞれ数 K しかありません。各ファイルを個別に転送する FTP プログラムを Java で作成しましたが、非常に長い時間がかかります。また、ハンドシェークのオーバーヘッドが問題を悪化させているようです。
私ができるようにしたいのは、FTP接続を開いてすべてのファイルを送信してから、もう一度閉じることです。
これが FTP で可能であることは知っていますが、Java でこれを達成する方法は私にはわかりません。
現在、配列にファイル名があるため、それらを解析しても問題ありません。次のクラスを呼び出してファイル名を渡そうとしましたが、数時間後も1秒あたり約1ファイル移動していました。
package website;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class ftpUpload {
public ftpUpload(String target, String savename, String localFilePath) {
URL url;
try {
url = new URL(target + savename + ";type=i");
URLConnection con = url.openConnection();
BufferedOutputStream out =
new BufferedOutputStream(con.getOutputStream());
FileInputStream in =
new FileInputStream(localFilePath + savename);
int i = 0;
byte[] bytesIn = new byte[1024];
while ((i = in.read(bytesIn)) >= 0) {
out.write(bytesIn, 0, i);
}
out.close();
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
ftp サイトのユーザー名とパスワードで接続を開き、ファイルを送信して最後に接続を閉じる方法はありますか?
これは、複数のスレッドを作成してファイルを同時に送信するよりも簡単に思えます。
どんなアドバイスも大いに受けました。
ポール