簡體   English   中英

Apache Commons FTPClient 未從源文件中檢索所有字節

[英]Apache Commons FTPClient Not Retrieving All Bytes From Source File

我有一個相當基本的3.8.0 FTPClient用例:

FTPClient ftpClient = new FTPClient()

ftpClient.connect(hostName, hostPort)

if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
  ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
  ftpClient.login(userName, password)

  FileOutputStream fos = new FileOutputStream("localFile.txt")

  ftpClient.retrieve("remoteFile.zip", fos)
}

我遇到的問題是生成的本地文件總是比遠程源文件小 ~1400 字節:

source file size: 134,914,722
dest file size:   134,913,316

這似乎不是服務器問題,因為標准 linux ftp 命令檢索整個文件。

它似乎也與OutputStream無關,因為當我將文件內容拉入 memory 時,我遇到了同樣的問題:

//still too small
Byte[] fileContents = ftpClient.retrieveFileStream("remoteFile.zip").readAllBytes()

什么會導致 apache commons FTPClient 允許連接和文件下載,但不能從源文件中徹底檢索所有字節?

預先感謝您的考慮和回復。

問題是setFileType的順序; 它應該在login之后而不是之前。

ftpClient.connect(...

ftpClient.login(...

ftpClient.setFileType(FTP.BINARY_FILE_TYPE)

文件變小可能是由於原始 zip 文件的字符集解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM