在 java 中完成 FTP 后创建 0 kb 文件

发布于 2024-11-24 13:49:07 字数 949 浏览 1 评论 0原文

我正在尝试将文件通过 FTP 传输到远程计算机上。下面是我的代码:-

FTPClient ftpClient = new FTPClient(); 
ftpClient.connect("home.abc.com"); 
ftpClient.login("remote", "guesst12"); 
int replyCode = ftpClient.getReplyCode(); 
ftpClient.changeWorkingDirectory("share")) 
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream input = new FileInputStream(new File("H:/testFile.txt"));
OutputStream out =  ftpClient.storeFileStream("testFile.txt");
Util.copyStream(input, out);
out.close();
input.close();
ftpClient.completePendingCommand()
ftpClient.logout();
ftpClient.disconnect();

当我执行这段代码时,代码的执行没有任何问题,但是在远程计算机上,当我检查文件时,正在创建文件,但没有内容(OKB)文件。我在代码中遗漏了什么吗?

[更新] : 我尝试使用以下代码来存储文件:-

if(ftpClient.storeFile("testCopy.txt", input)) {
    System.out.println("File Stored Successfully");
}
System.out.println(ftpClient.getReplyString());

现在我收到的回复代码是:- 451 写入本地文件失败。 这意味着什么。

谢谢

I am trying to FTP a file on to a remote machine. Below is my code :-

FTPClient ftpClient = new FTPClient(); 
ftpClient.connect("home.abc.com"); 
ftpClient.login("remote", "guesst12"); 
int replyCode = ftpClient.getReplyCode(); 
ftpClient.changeWorkingDirectory("share")) 
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream input = new FileInputStream(new File("H:/testFile.txt"));
OutputStream out =  ftpClient.storeFileStream("testFile.txt");
Util.copyStream(input, out);
out.close();
input.close();
ftpClient.completePendingCommand()
ftpClient.logout();
ftpClient.disconnect();

When i execute this piece of code, the code is executed without any issues, but at the remote machine, when i check the file, the file is being created, but with no content (OKB) file. Am i missing something in code.

[Update] :
I tried with the following code for storing file :-

if(ftpClient.storeFile("testCopy.txt", input)) {
    System.out.println("File Stored Successfully");
}
System.out.println(ftpClient.getReplyString());

Now the reply code i recieved is :- 451 Failure writing to local file. What does that means.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

恰似旧人归 2024-12-01 13:49:07

一遍又一遍地看之后,我不断地想出不同的东西。

您确定在复制流之前 InputStream 正在读取文件吗?因为我不确定 FileInputStream 是否在启动时读取文件。

After looking at it over and over I keep coming up with different things.

Are you sure that the InputStream is reading the file before your copying the stream? Because I'm not sure FileInputStream read's the file on initiation.

记忆消瘦 2024-12-01 13:49:07

我怀疑问题出在 Util.copyStream 中,您没有提供该代码。我强烈建议您使用 来自 Apache Commons IO 的 IOutils 复制流。

I suspect that the problem is inUtil.copyStream, which code you didn't provide. I highly recommend that you use IOutils from Apache Commons IO to copy streams.

自在安然 2024-12-01 13:49:07

查看具有类似问题的此处的旧问题,看起来您点击了Commons-NET 库的错误(FTPClient 是其中的一部分)。

尝试安装较新的版本(3.0.1 或更高版本)或较早的版本(2.2)来解决此问题。

Looking at older questions here with similar problems, it looks like you hit a bug of the Commons-NET library (of which the FTPClient is a part).

Try to install a newer version (3.0.1 or later), or an earlier version (2.2) to fix this.

梨涡 2024-12-01 13:49:07

尝试通过 FTP 复制文件时遇到 FTP 错误 451 的原因之一
特别是如果您看到在服务器端创建了 0 大小的文件,
可能是由于磁盘上没有空间

One of the reasons running into FTP error 451 when trying to copy a file over FTP
especially if you see 0 sized file created on the server side,
is probably due to No Space on Disk.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文