欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java調ftp上傳和下載為0k

林國瑞1年前7瀏覽0評論

Java是一種流行的編程語言,常用于開發各種應用程序。在Java中,操作FTP服務器以上傳和下載文件是一項常見的任務。然而,從FTP服務器下載或上傳的文件大小為0k的問題經常會遇到。這個問題可能由多種因素導致,這篇文章將介紹如何解決Java調用FTP上傳和下載為0k的問題。

首先,我們需要了解Java程序中用于FTP讀寫的類庫,常用的有apache.commons.net.ftp.*和sun.net.ftp.*兩個包。其中,apache.commons.net.ftp.*包提供了更多的功能,相對而言更穩定,推薦使用。

接下來,我們需要注意一些文件傳輸過程可能出現的問題。

1. 上傳的文件大小為0

FTPClient ftp = new FTPClient();
ftp.connect(ip, port);
ftp.login(username, password);
File file = new File(localPath);
FileInputStream input = new FileInputStream(file);
ftp.storeFile(remotePath, input);

上述代碼漏掉了一行:

ftp.enterLocalPassiveMode();

因為FTP默認使用主動模式(即服務器向客戶端發起連接),而有些防火墻會拒絕此類連接,因此需要使用被動模式(客戶端向服務器發起連接)。

2. 下載的文件大小為0

FTPClient ftp = new FTPClient();
ftp.connect(ip, port);
ftp.login(username, password);
FileOutputStream output = new FileOutputStream(localPath);
ftp.retrieveFile(remotePath, output);

為解決這個問題,我們可以把retrieveFile換成retrieveFileStream,然后手動讀取,再寫入文件。

FTPClient ftp = new FTPClient();
ftp.connect(ip, port);
ftp.login(username, password);
OutputStream output = new FileOutputStream(localPath);
InputStream input = ftp.retrieveFileStream(remotePath);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = input.read(buffer)) != -1) {
output.write(buffer, 0, len);
}
input.close();
output.close();
ftp.completePendingCommand();

綜上所述,要解決Java調用FTP上傳和下載為0k的問題,我們需要讓程序進入被動模式,同時手動讀取并寫入文件。我們需要注意的是,FTP連接的穩定性和防火墻設置等因素也可能會影響文件傳輸的結果。