當前位置:首頁 » 文件傳輸 » java實現ftp文件剪切
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

java實現ftp文件剪切

發布時間: 2023-01-30 07:53:45

『壹』 怎樣實現遠端ftp伺服器上的文件剪切,粘貼操作

你有FTPClient就比較好辦,假如你的兩台FTP伺服器分別為fs1和fs2在本地開發代碼思路如下:

通過FTPClient連接上fs1,然後下載(可以循環批量下載)到本地伺服器,保存到一個臨時目錄。

下載完成後,FTPClient斷開與fs1的連接,記得必須logout。

本地伺服器通過FileInputStream將剛下載到臨時目錄的文件讀進來,得到一個List<File>集合。

通過FTPClient連接上fs2,循環List<File>集合,將文件上傳至fs2的特定目錄,然後清空臨時目錄,上傳完畢後,斷開fs2的連接,同樣必須logout。

『貳』 java ftp

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import sun.net.ftp.FtpClient;

/**
*
* @author chenc
* @version 1.0
*
* 2008-02-19
*
*/
public class Ftp {

private String ip = "";

private String username = "";

private String password = "";

private String ftpDir = "";

private String localFileFullName = "";// 待上傳的文件全名

private String ftpFileName = ""; // 文件上傳到FTP後的名稱

FtpClient ftpClient = null;

OutputStream os = null;

FileInputStream is = null;

public Ftp(String serverIP, String username, String password, String ftpDir) {

this.ip = serverIP;
this.username = username;
this.password = password;

if (ftpDir == null) {
this.ftpDir = "/ftpfileload";
} else {
try {
this.ftpDir = "/"
+ new String(ftpDir.getBytes("ISO-8859-1"), "GBK")
.toString();
} catch (UnsupportedEncodingException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}

}

private void createDir(String dir, FtpClient ftpClient) {
System.out.println(this.ftpDir);
ftpClient.sendServer("MKD " + dir + "\r\n");

try {
ftpClient.readServerResponse();
} catch (IOException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}

}

private Boolean isDirExist(String dir, FtpClient ftpClient) {
try {
ftpClient.cd(dir);
} catch (Exception e) {
// TODO 自動生成 catch 塊
return false;
}
return true;
}

public String upload(String localFileFullName) {

// this.ftpFileName = "aaa.test";

// 獲取文件後綴名
String ext = localFileFullName.substring(localFileFullName
.lastIndexOf("."));
// System.out.println(ext);

// 產生新文件名,用系統當前時間+文件原有後綴名
long newFileName = System.currentTimeMillis();
String newFileFullName = newFileName + ext;
// System.out.println("new file name:"+newFileFullName);
this.ftpFileName = newFileFullName;

try {
String savefilename = new String(localFileFullName
.getBytes("ISO-8859-1"), "GBK");
// 新建一個FTP客戶端連接
ftpClient = new FtpClient();
ftpClient.openServer(this.ip);
ftpClient.login(this.username, this.password);

// 判斷並創建目錄
if (!isDirExist(this.ftpDir, ftpClient)) {
createDir(this.ftpDir, ftpClient);
}

ftpClient.cd(this.ftpDir);// 切換到FTP目錄
ftpClient.binary();

os = ftpClient.put(this.ftpFileName);
// 打開本地待長傳的文件
File file_in = new File(savefilename);
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];

// 開始復制
int c;
// 暫未考慮中途終止的情況
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
if (ftpClient != null) {
ftpClient.closeServer();
}
} catch (Exception e) {
System.err.println("Exception e in Ftp upload() finally"
+ e.toString());
}
}
return this.ftpFileName;
}

public void delFile(String dir, String filename) {
ftpClient = new FtpClient();
try {
ftpClient.openServer(this.ip);
ftpClient.login(this.username, this.password);
if (dir.length() > 0) {
ftpClient.cd(dir);
}
ftpClient.sendServer("DELE " + filename + "\r\n");
ftpClient.readServerResponse();

} catch (IOException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}

}

我寫的一個FTP類,你看看你能不能用。。。。。

『叄』 JAVA怎麼實現刪除遠程FTP伺服器上的某一文件

一個JAVA 實現FTP功能的代碼,包括了伺服器的設置模塊,並包括有上傳文件至FTP的通用方法、下載文件的通用方法以及刪除文件、在ftp伺服器上傳文件夾、檢測文件夾是否存在等,裡面的有些代碼對編寫JAVA文件上傳或許有參考價值,

(1):Java FTP主文件代碼:

package ftpDemo;

import java.io.DataOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import sun.net.TelnetInputStream;

import sun.net.TelnetOutputStream;

import sun.net.ftp.FtpClient;

public class ftpUtil {

// 上傳文件至FTP通用方法

public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName為上傳的文件名

DataOutputStream dataOut = new DataOutputStream(telnetOut);

byte buffer[] = new byte[ * ];

int count = ;

while ((count = is.read(buffer)) != -) {

dataOut.write(buffer, , count);

}

telnetOut.close();

dataOut.close();

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("上傳文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

}

// 刪除文件至FTP通用方法

public static void deleteFileFtp(KmConfig kmConfig,String fileName){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

try {

ftpClient.sendServer("dele " + fileName + " ");

} catch (Exception e) {

System.out.println("刪除文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("刪除文件失敗!");

}

}

// 下載ftp文件

public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){

try {

String ftpHost = kmConfig.getFtpHost();

int port = kmConfig.getFtpPort();

String userName = kmConfig.getFtpUser();

String passWord = kmConfig.getFtpPassword();

String path = kmConfig.getFtpPath();

FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost為FTP伺服器的IP地址,port為FTP伺服器的登陸埠,ftpHost為String型,port為int型。

ftpClient.login(userName, passWord);// userName、passWord分別為FTP伺服器的登陸用戶名和密碼

ftpClient.binary();

ftpClient.cd(path);// path為FTP伺服器上保存上傳文件的路徑。

try {

TelnetInputStream in = ftpClient.get(fileName);

byte[] bytes = new byte[];

int cnt=;

while ((cnt=in.read(bytes,,bytes.length)) != -) {

outputStream.write(bytes, , cnt);

}

outputStream.close();

in.close();

} catch (Exception e) {

ftpClient.closeServer();

e.printStackTrace();

}

ftpClient.closeServer();

} catch (Exception e) {

System.out.println("下載文件失敗!請檢查系統FTP設置,並確認FTP服務啟動");

}

}

//在ftp伺服器上傳件文件夾

public boolean createDir(String path,FtpClient ftpClient) throws Exception{

//進入到home文件夾下

ftpClient.cd("/home");

//創建遠程文件夾

//遠程命令包括

//USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br>

// PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br>

// ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br>

// REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br>

// QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br>

// 在伺服器上執行命令,如果用sendServer來執行遠程命令(不能執行本地FTP命令)的話,所有FTP命令都要加上/r/n<br>

// ftpclient.sendServer("XMKD /test/bb/r/n"); //執行伺服器上的FTP命令<br>

// ftpclient.readServerResponse一定要在sendServer後調用<br>

// nameList("/test")獲取指目錄下的文件列表<br>

// XMKD建立目錄,當目錄存在的情況下再次創建目錄時報錯<br>

// XRMD刪除目錄<br>

// DELE刪除文件<br>

//通過遠程命令 穿件一個files文件夾

ftpClient.sendServer("MKD "+ path + " ");

//這個方法必須在 這兩個方法中間調用 否則 命令不管用

ftpClient.binary();

ftpClient.readServerResponse();

return false;

}

/**

* 檢查文件夾是否存在

* @param dir

* @param ftpClient

* @return

*/

public boolean isDirExist(String dir, FtpClient ftpClient) {

try {

ftpClient.cd(dir);

} catch (Exception e) {

return false;

}

return true;

}

}

(2):KmConfig.java代碼如下:定義FTP伺服器參數,包括登錄的用戶名密碼之類的。

package ftpDemo;

public class KmConfig {

//主機ip

private String FtpHost = "";

//埠號

private int FtpPort;

//ftp用戶名

private String FtpUser = "";

//ftp密碼

private String FtpPassword = "";

//ftp中的目錄

private String FtpPath = "";

public String getFtpHost() {

return FtpHost;

}

public void setFtpHost(String ftpHost) {

FtpHost = ftpHost;

}

public int getFtpPort() {

return FtpPort;

}

public void setFtpPort(int ftpPort) {

FtpPort = ftpPort;

}

public String getFtpUser() {

return FtpUser;

}

public void setFtpUser(String ftpUser) {

FtpUser = ftpUser;

}

public String getFtpPassword() {

return FtpPassword;

}

public void setFtpPassword(String ftpPassword) {

FtpPassword = ftpPassword;

}

public String getFtpPath() {

return FtpPath;

}

public void setFtpPath(String ftpPath) {

FtpPath = ftpPath;

}

}

(3):下面是測試代碼:

『肆』 Java的ftp操作方法有哪幾種

FTP(File Transfer Protocol)是 Internet 上用來傳送文件的協議(文件傳輸協議)。它是為了我們能夠在 Internet 上互相傳送文件而制定的的文件傳送標准,規定了 Internet 上文件如何傳送。也就是說,通過 FTP 協議,我們就可以跟 Internet 上的 FTP 伺服器進行文件的上傳(Upload)或下載(Download)等動作。

和其他 Internet 應用一樣,FTP 也是依賴於客戶程序/伺服器關系的概念。在 Internet 上有一些網站,它們依照 FTP 協議提供服務,讓網友們進行文件的存取,這些網站就是 FTP 伺服器。網上的用戶要連上 FTP 伺服器,就要用到 FPT 的客戶端軟體,通常 Windows 都有「ftp」命令,這實際就是一個命令行的 FTP 客戶程序,另外常用的 FTP 客戶程序還有 CuteFTP、Ws_FTP、FTP Explorer等。

要連上 FTP 伺服器(即「登陸」),必須要有該 FTP 伺服器的帳號。如果是該伺服器主機的注冊客戶,你將會有一個 FTP 登陸帳號和密碼,就憑這個帳號密碼連上該伺服器。但 Internet 上有很大一部分 FTP 伺服器被稱為「匿名」(Anonymous)FTP 伺服器。這類伺服器的目的是向公眾提供文件拷貝服務,因此,不要求用戶事先在該伺服器進行登記注冊。

Anonymous(匿名文件傳輸)能夠使用戶與遠程主機建立連接並以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名「anonymous」和「guest」就可有限制地訪問遠程主機上公開的文件。現在許多系統要求用戶將Emai1地址作為口令,以便更好地對訪問進行跟綜。出於安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載(download)文件,而不允許上載(upload)文件。也就是說,用戶只能從匿名FTP主機拷貝需要的文件而不能把文件拷貝到匿名FTP主機。另外,匿名FTP主機還採用了其他一些保護措施以保護自己的文件不至於被用戶修改和刪除,並防止計算機病毒的侵入。在具有圖形用戶界面的 WorldWild Web環境於1995年開始普及以前,匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬的匿名PTP主機中存儲著無以計數的文件,這些文件包含了各種各樣的信息,數據和軟體。 人們只要知道特定信息資源的主機地址, 就可以用匿名FTP登錄獲取所需的信息資料。雖然目前使用WWW環境已取代匿名FTP成為最主要的信息查詢方式,但是匿名FTP仍是 Internet上傳輸分發軟體的一種基本方法

『伍』 JAVA_JSCH如何遠程操作SFTP伺服器上的文件

使用SSH協議進行FTP傳輸的協議叫SFTP
換言之你的SSH協議一定啟用了,那麼使用基本linux命令在遠端執行即可。
我個人而言,JSCH一般是這樣用的:SFTP用於單純的文件上傳,之後直接使用基礎ssh協議執行遠端linux命令(比如說,移動文件或是重啟伺服器等等)
至於API的具體使用方式,稍微搜索一下很容易找到,比如這個:

http://blog.csdn.net/allen_zhao_2012/article/details/7941631

『陸』 高分求大神解答,java 操作FTP的問題

檢查你自己的代碼,確定ftp有讀許可權,如果實在不行,網上找段代碼,參照重新寫一個試試,有時候自己寫的代碼小小的錯誤很難發現。

『柒』 用java實現ftp側壓縮文件的解壓

我們在開發項目的時候,特別是B/S系統,經常會遇到要批量上傳文件的需求,對此需求一般有如下幾個解決方案(以B/S為例):1. 在客戶端提供文件上傳介面,一次上傳一個文件2. 一次上傳多個文件3. 將需要上傳的文件打包,一次上傳到伺服器,並自動解壓到指定目錄1,2方法都有幾個很明顯的不足,用戶工作量大,文件如果過大,在網路環境中,上傳的效率低下,另外文件在不同的目錄,是無法進行一次選擇上傳的.所以打包上傳就成為了比較流行的批量文件上傳的解決方案,下面就來一起討論一下在java中如何實現: 主要功能需求: a. 上傳文件,將文件保存在伺服器 b. 讀取伺服器上壓縮文件,解壓到指定目錄 下面就這兩個需求說說編碼實現上傳: 使用了smartupload開源程序 參考鏈接: http://hi..com/liuzy84/blog/item/556318f4fad1cc6fddc4741a.html

『捌』 用java實現ftp側壓縮文件的解壓

你這個問題有點怪,首先你要在伺服器解壓縮的話,你有伺服器的Java程序執行許可權嗎?如果有的話可以考慮,在伺服器做Java對Ftp文件夾的文件監控,發現壓縮包自動調用解壓縮代碼解壓,如果沒有伺服器執行許可權,那你就不用考慮這個問題了

『玖』 java中怎麼實現ftp伺服器

我知道apache有個commons net包,其中的FTPClient類可以實現客戶端和服務之間的文件傳輸,但是我如果使用這種方式的話,就得將一台伺服器上的文件傳到我本地,再將這個文件傳到另一台伺服器上,感覺這中間多了一步操作;

『拾』 如何用Java實現文件列表

用遞歸實現。
1. import java.io.File;
2. import java.io.FileFilter;
3. import java.io.FilenameFilter;
4.
5. /**
6. * 文件列表。<br>
7. * 可以指定過濾條件。
8. *
9. * @author leo
10. *
11. */
12. public class FileList {
13.
14. /**
15. * @param args
16. */
17. public static void main(String[] args) {
18. File dir = new File(".");
19.
20. // 所有的文件和目錄名
21. String[] children = dir.list();
22. if (children == null) {
23. // 不存在或者不是目錄
24. } else {
25. System.out.println("#### 1 ####");
26. for (int i = 0; i < children.length; i++) {
27. // 文件名
28. System.out.println(children[i]);
29. }
30. }
31.
32. // 可以指定返迴文件列表的過濾條件
33. // 這個例子不返回那些以.開頭的文件名
34. FilenameFilter filter = new FilenameFilter() {
35. public boolean accept(File dir, String name) {
36. return !name.startsWith(".");
37. }
38. };
39. children = dir.list(filter);
40. System.out.println("#### 2 ####");
41. for (int i = 0; i < children.length; i++) {
42. // 文件名
43. System.out.println(children[i]);
44. }
45.
46. // 也可以拿到文件對象的列表
47. File[] files = dir.listFiles();
48. System.out.println("#### 3 ####");
49. for (int i = 0; i < files.length; i++) {
50. // 文件名
51. System.out.println(files[i].getName());
52. }
53.
54. // 下面這個過濾條件只返回目錄
55. FileFilter fileFilter = new FileFilter() {
56. public boolean accept(File file) {
57. return file.isDirectory();
58. }
59. };
60. files = dir.listFiles(fileFilter);
61. System.out.println("#### 4 ####");
62. for (int i = 0; i < files.length; i++) {
63. // 文件名
64. System.out.println(files[i].getName());
65. }
66.
67. }
68.
69. }