[英]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.