私は多くの例を見て、私が間違っていることを理解しようとしましたが、成功しませんでした.多分あなたは私を助けることができます. 常に 2 番目のファイルで停止しますが、最初のファイルは c:\ にサイズ 0kb で作成されます。files_server.get(i) は、ダウンロードしたいすべてのファイルを含む ArrayList です。
私のコード:
public FTPConnection() {
StartD std = new StartD();
std.start();
}
class StartD extends Thread{
@Override
public void run()
{
for (int i = 0; i < files_server.size(); i++) {
err = ftpDownload(files_server.get(i), "C:/"+ files_server.get(i));
if (!err)
{
System.out.println("Error in download, breaking");
break;
}
}
}
public boolean ftpDownload(String srcFilePath, String desFilePath)
{
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);
InputStream input = mFTPClient.retrieveFileStream(srcFilePath);
byte[] data = new byte[1024];
int count;
while ((count = input.read(data)) != -1)
{
desFileStream.write(data, 0, count);
}
desFileStream.close();
} catch (Exception e) {
return false;
}
return true;
}}
関数を使用する場合:
public boolean ftpDownload(String srcFilePath, String desFilePath) {
boolean status = false;
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);
status = mFTPClient.retrieveFile(srcFilePath, desFileStream);
desFileStream.close();
return status;
} catch (Exception e) {
}
return status;
}
代わりに、すべて正常に動作しますが、ファイルのダウンロードの進行状況を監視できません。