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
相关,因为我在将文件内容拉入内存时遇到同样的问题:
//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 文件的字符集解释。
我有一个相当基本的 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
相关,因为我在将文件内容拉入内存时遇到同样的问题:
//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 文件的字符集解释。