如何在 Java 中使用 FTPClient 复制 FTP 服务器中的文件?

2022-01-09 00:00:00 ftp java apache-commons-net

我有一个 CSV 文件,我需要复制它并在同一路径中重命名它.

I have a CSV file, and I need to copy it and rename it in the same path.

我在 FTP 登录后尝试了这个:

I tried this after the FTP login:

InputStream inputStream = ftpClient.retrieveFileStream(cvs_name +".csv");
ftpClient.storeFile(cvs_name2 + ".csv",inputStream);

但是当我在服务器上验证文件时,它是空的.如何复制文件并重命名?

But when I verify the file on the server, it's empty. How can I copy a file and rename it?

推荐答案

我相信你的代码不能工作.您不能同时通过一个 FTP 连接下载和上传文件.

I believe your code cannot work. You cannot download and upload a file over a single FTP connection at the same time.

你有两个选择:

  • 首先将文件完全下载(到临时文件或内存中).

  • Download the file completely first (to a temporary file or to a memory).

如何将 ftp 服务器上的文件复制到 java 中同一服务器上的目录?显示记忆"解决方案.注意 outputStream.toByteArray() 调用.

The accepted answer to How to copy a file on the ftp server to a directory on the same server in java? shows the "to memory" solution. Note the outputStream.toByteArray() call.

打开两个连接(FTPClient 的两个实例)并在实例之间复制文件.

Open two connections (two instances of the FTPClient) and copy the file between the instances.

InputStream inputStream = ftpClient1.retrieveFileStream(cvs_name + ".csv");
ftpClient2.storeFile(cvs_name2 + ".csv", inputStream);

相关文章