[英]Java - Storing File on FTP Server fails
我正在尝试将byteArrayInputStream作为文件存储在FTP服务器上 。 我已经可以连接到服务器并更改工作路径,但是触发将流作为文件存储在服务器上的方法总是返回false 。
我正在使用Apache FTPClient。
有人可以给我提示我的错误可能在哪里!?
这里的代码:
String filename = "xyz.xml"
// connection returns true
connectToFtpServer(ftpHost, ftpUser, ftpPassword, exportDirectory);
// byteArray is not void
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
try {
// change returns true
result = ftpClient.changeWorkingDirectory(exportDirectory);
// storing the file returns false
result = ftpClient.storeFile(filename, byteArrayInputStream);
byteArrayInputStream.close();
ftpClient.logout();
} catch (...) {
...
} finally {
// disconnect returns true
disconnectFromFtpServer();
}
由于用户组无效,实际上是一个权限问题。 将用户添加到用户组后,我可以再次存储文件。
我不相信这是您的代码。 这是另一个看起来与kodejava非常相似的示例:package org.kodejava.example.commons.net;
import org.apache.commons.net.ftp.FTPClient;
import java.io.FileInputStream;
import java.io.IOException;
public class FileUploadDemo {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect("ftp.domain.com");
client.login("admin", "secret");
//
// Create an InputStream of the file to be uploaded
//
String filename = "Touch.dat";
fis = new FileInputStream(filename);
//
// Store file to server
//
client.storeFile(filename, fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
我同意这是文件权限。 目前还没有办法在Java本身中更改权限,但是还有其他解决方案。 请参见此线程: 如何以编程方式更改文件权限?
HTH,
詹姆士
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.