问题与Android的FTP客户端

问题描述:

我正尝试通过FTP
下载文件与本地Android项目这是我的方法问题与Android的FTP客户端

@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。 我不明白为什么会发生这种情况。如果有人能帮我一把,我会非常感谢

请确保在函数返回前正常关闭输出流。你可以尝试显式调用flush()或close()。 好像你的方法在保存所有数据之前返回。

请参阅this answer

+0

哦,它的工作原理!谢谢!! – ZamoraFTW

+0

不客气。请接受答案(V):) – ApriOri

+0

(我正在尝试,我不得不等待。)再次感谢^^ – ZamoraFTW