我需要將文本文件從一臺服務器複製到另一臺服務器(兩臺服務器都是Linux)。 我如何在Java中做到這一點?將文件從一臺服務器複製到另一臺
回答
Easist如果你能使用apache commons-io:在FileUtils
類有方便的方法來複制文件:
FileUtils.copyFileToDirectory(srcFile, targetDirectory);
(如你談到文本文件我想,你的應用程序同時訪問文件系統)
要求服務器A有一個本地安裝的服務器B的目錄? – aioobe 2010-09-28 12:38:08
這樣猜測。這個問題有點含糊 - 通常你有一個給定的接口(文件系統,FTP,Web服務,...),尋找幫助來實現/使用給定的編程語言(這裏:Java)... – 2010-09-28 12:47:40
好的答案( +1) – 2010-09-28 13:13:43
如果您需要從可訪問文件系統複製文件,請使用Andreas' answer。
如果您想要一個從下面的協議摘要的一般方法,請看Apache Commons VFS。它通過a number of protocols的可用資源的通用API:
- FTP
- 本地文件
- HTTP和HTTPS
- SFTP
- 臨時文件
- 郵編,罐和焦油(未壓縮的,TGZ或tbz2)
- gzip and bzip2
- res
- RAM
- 啞劇
幾乎所有的Linux機器將其默認運行SSH服務器。因此,SCP將是您在它們之間複製文件的最佳選擇。
使用像JSCH這樣的SSH庫來做到這一點。你會發現一個使用JSCH here進行SCP傳輸的教程。
如果你使用FTP,你可以使用Apache commons/net的FTPClient。
這裏是供您參考示例代碼:
FTPClient client = new FTPClient();
client.connect(host);
if(FTPReply.isPositiveCompletion(client.getReplyCode())) {
if(client.login(username, password)) {
FileInputStream fis = new FileInputStream(localFilepath);
try {
if(client.storeFile(remoteFilename, fis)) {
System.out.println("File uploaded!");
}
}
finally {
fis.close();
}
}
}
如果你想要一個簡單的方法,你的服務器支持PHP,我建議Rapid Transfer Script。
只需將腳本上傳到要複製文件的目錄,輸入要複製的文件的URL並點擊轉移。它在2分鐘內複製了一個1.4GB的文件,爲我節省了大量的時間和帶寬。
我已經使用commons net FTP將文件從一臺服務器傳輸到另一臺服務器。
Maven的相關性:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
的Java:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public void tranferFile() {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(servername, port);
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
File sourceFile = new File("file which you want to send");
InputStream inputStream = new FileInputStream(sourceFile);
boolean done = ftpClient.storeFile("filename which receiver get", inputStream);
inputStream.close();
if (done) {
LOGGER.info("file is uploaded successfully..............");
}
} catch (IOException e) {
LOGGER.error("Exception occured while ftp : "+e);
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException e) {
LOGGER.error("Exception occured while ftp logout/disconnect : "+e);
}
}
}
- 1. 將Java文件從一臺服務器複製到另一臺
- 2. 將json文件從一臺服務器複製到另一臺服務器
- 3. 複製PHP文件從一臺服務器到另一臺
- 4. 將打印機從一臺服務器複製到另一臺
- 5. 將工作流從一臺服務器複製到另一臺
- 6. 將表從一臺phpMyAdmin服務器複製到另一臺
- 7. Shell腳本將文件從一臺服務器複製到另一臺
- 8. 如何將文件所有者從一臺服務器複製到另一臺
- 9. 我可以將文件從一臺服務器複製到另一臺嗎?
- 10. 將MySql數據庫從一臺服務器複製到另一臺服務器
- 11. 將圖像從一臺服務器複製到另一臺服務器上PHP
- 12. 使用vbscript將文件從一臺服務器複製到同一域中的另一臺服務器
- 13. 將文件從一臺服務器發送到另一臺服務器。
- 14. 將文件從一臺遠程服務器發佈到另一臺服務器
- 15. 將大量文件從一臺服務器轉移到另一臺服務器
- 16. 將文件從一臺服務器上傳到另一臺服務器
- 17. 如何將文件從一臺服務器移動到另一臺服務器
- 18. 如何將SQL服務器從一臺機器複製到另一臺機器
- 19. 如何將工件從TeamCity複製到另一臺服務器?
- 20. Sql數據庫從一臺服務器複製到另一臺服務器
- 21. 如何將hdfs文件複製到另一臺服務器[linux]
- 22. 使用c可靠地將文件從一臺服務器複製到另一臺服務器#
- 23. 使用Ansible將文件從一臺服務器複製到另一臺服務器
- 24. 15分鐘後將更新的文件從一臺服務器複製到另一臺服務器
- 25. 將DB文件從一臺MySQL服務器複製到另一臺服務器可以嗎?
- 26. 試圖通過shell腳本將文件從一臺服務器複製到另一臺服務器
- 27. 在linux中將文件從一臺服務器複製到另一臺服務器
- 28. 在java中將目錄,子目錄和文件從一臺服務器複製到另一臺服務器
- 29. unix命令將文件從一臺服務器複製到另一臺服務器
- 30. SSIS文件系統任務將文件從一臺服務器複製到另一臺
類型的服務器? ,服務器B可以使用HTTP訪問服務器A的文件嗎? – 2010-09-28 12:34:28
你可以使用FTP嗎?你的服務器在同一個網絡上嗎?你在使用共享文件系統嗎?你可以部署一個Servlet嗎?我認爲我們需要更多的背景來回答。 – 2010-09-28 12:34:30
你可以使用[scp](http://www.go2linux.org/scp-linux-command-line-copy-files-over-ssh),但是我想你自己實現之後,不是嗎? – Patrick 2010-09-28 12:52:33