Android FTP客户端的java问题
我正试图通过FTP下载一个本地Android项目的文件
这是我的方法
@Override protected File doInBackground(Void... params) {
File fileBar = new File(mLocalDir, mFileNameBar);
boolean descargado = false;
FTPClient ftpClient = null;
try {
ftpClient = new FTPClient();
ftpClient.setConnectTimeout(10000);
ftpClient.connect(SERVER, 21);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
if (ftpClient.login(mUser, mPass)) {
ftpClient.changeWorkingDirectory("/Almacen");
FileOutputStream fileOutputStreamBar;
fileOutputStreamBar = new FileOutputStream(fileBar, false);
OutputStream outputStreamBar = new BufferedOutputStream(fileOutputStreamBar);
FileOutputStream fileOutputStreamPec;
fileOutputStreamPec = new FileOutputStream(filePec, false);
OutputStream outputStreamPec = new BufferedOutputStream(fileOutputStreamPec);
descargado = ftpClient.retrieveFile(mFileNameBar, outputStreamBar);
}
} catch (IOException e) {
System.out.println(e.toString());
fileArt = null;
} finally {
if (ftpClient != null && ftpClient.isConnected()) try {
ftpClient.logout();
} catch (IOException ignored) {
}
if (ftpClient != null) try {
ftpClient.disconnect();
} catch (IOException ignored) {
}
}
return (descargado ? fileArt : null);
}
这个方法是正确的,至少我认为是这样。它下载所请求的文件,但不是占用32Kb,而是占用24Kb。 我不明白为什么会这样。如果有人能帮助我,我将非常感激
# 1 楼答案
请确保在函数返回之前优雅地关闭输出流。您可以尝试显式调用flush()或close()。 您的方法似乎在保存所有数据之前返回
见this answer