Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';不在源位置时不使用文件_Java - Fatal编程技术网

Java Can';不在源位置时不使用文件

Java Can';不在源位置时不使用文件,java,Java,所以我通过Java上传了一个文件到FTP。当文件位于项目的源位置时,我上传文件没有问题,但是当我想在桌面上传文件时,它不会上传 client.connect("REMOVED"); client.login("REMOVED", "REMOVED"); String filename = "Icon.png"; fis = new FileInputStream(filename); client.storeFile(filename, fis); client.logout(); 如果我

所以我通过Java上传了一个文件到FTP。当文件位于项目的源位置时,我上传文件没有问题,但是当我想在桌面上传文件时,它不会上传

client.connect("REMOVED");
client.login("REMOVED", "REMOVED");

String filename = "Icon.png";
fis = new FileInputStream(filename);

client.storeFile(filename, fis);
client.logout();
如果我这样做,它会工作,但如果我把它改成

String filename = "C:\\Users\\username\\Desktop\\Icon.png";
我会得到一个错误,文件在那里,如果我把名字改成

String filename = "C:\\Users\\username\\Desktop\\asdf.png";

这是不存在的,我会得到一个错误,但当我这样做时,它不会给出错误,但文件不会上传。有什么想法吗?

应该显式关闭FileInputStream。我认为
FTPClient
不会这样做

client.storeFile(filename, fis);
fis.close();

client.logout();
client.disconnect();
因为,您在上载图像时还将文件类型设置为二进制

client.setFileType(FTPClient.BINARY_FILE_TYPE);

编辑:(首先由@Ingo发现)

尽管如此,在每个人看来,将绝对路径指定为

String filename = "C:\\Users\\username\\Desktop\\Icon.png";
我们大多数人都没有看到同一个文件名被传递给了其他人

client.storeFile(filename, fis);
由于绝对路径不能用作远程文件名,因此默认情况下失败。要从上面的绝对路径中删除目录并只保留文件名,我们可以按如下方式调用storeFile()


您遇到的错误是什么?我没有遇到错误,但文件无法上传。请尝试在
storeFile
@Ingo中使用一个合理的文件名(而不是路径名),OP说:“谢谢,如果您将其作为一个问题发布,我希望mark作为答案。”@Smit OP可能想说,如果@Ingo将其评论作为答案发布,他会接受它。我只是重复了一遍,因为OP忘了使用
@
;已经有了,只是不在那里。另外,我希望保持原样,以便我可以上载其他文件,以防万一。@user2526311,如果您不设置文件类型;当您再次下载同一文件时,它将被损坏。您可以通过比较文件大小来检查这一点。它们会因您的本地和您上传的ASCII而有所不同。(但是是的,这并不是你的程序不工作的原因。)我不会下载文件,但我会添加它并注意这一点。谢谢,如果你查一下,也有一个解决办法。
client.storeFile(filename.substring(filename.lastIndexOf("\\") + 1), fis); // Icon.png