有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    请确保在函数返回之前优雅地关闭输出流。您可以尝试显式调用flush()或close()。 您的方法似乎在保存所有数据之前返回

    this answer