一個(gè)JAVA 實(shí)現(xiàn)FTP功能的代碼,包括了服務(wù)器的設(shè)置模塊,并包括有上傳文件至FTP的通用方法、下載文件的通用方法以及刪除文件、在ftp服務(wù)器上傳文件夾、檢測(cè)文件夾是否存在等,里面的有些代碼對(duì)編寫JAVA文件上傳或許有參考價(jià)值,Java FTP主文件代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
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服務(wù)器的IP地址,port為FTP服務(wù)器的登陸端口,ftpHost為String型,port為int型。 ftpClient.login(userName, passWord); // userName、passWord分別為FTP服務(wù)器的登陸用戶名和密碼 ftpClient.binary(); ftpClient.cd(path); // path為FTP服務(wù)器上保存上傳文件的路徑。 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( "上傳文件失敗!請(qǐng)檢查系統(tǒng)FTP設(shè)置,并確認(rèn)FTP服務(wù)啟動(dòng)" ); } } // 刪除文件至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服務(wù)器的IP地址,port為FTP服務(wù)器的登陸端口,ftpHost為String型,port為int型。 ftpClient.login(userName, passWord); // userName、passWord分別為FTP服務(wù)器的登陸用戶名和密碼 ftpClient.binary(); ftpClient.cd(path); // path為FTP服務(wù)器上保存上傳文件的路徑。 try { ftpClient.sendServer( "dele " + fileName + "\r\n" ); } catch (Exception e) { System.out.println( "刪除文件失敗!請(qǐng)檢查系統(tǒng)FTP設(shè)置,并確認(rèn)FTP服務(wù)啟動(dòng)" ); } 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服務(wù)器的IP地址,port為FTP服務(wù)器的登陸端口,ftpHost為String型,port為int型。 ftpClient.login(userName, passWord); // userName、passWord分別為FTP服務(wù)器的登陸用戶名和密碼 ftpClient.binary(); ftpClient.cd(path); // path為FTP服務(wù)器上保存上傳文件的路徑。 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( "下載文件失敗!請(qǐng)檢查系統(tǒng)FTP設(shè)置,并確認(rèn)FTP服務(wù)啟動(dòng)" ); } } //在ftp服務(wù)器上傳件文件夾 public boolean createDir(String path,FtpClient ftpClient) throws Exception{ //進(jìn)入到home文件夾下 ftpClient.cd( "/home" ); //創(chuàng)建遠(yuǎn)程文件夾 //遠(yuǎn)程命令包括 //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> // 在服務(wù)器上執(zhí)行命令,如果用sendServer來執(zhí)行遠(yuǎn)程命令(不能執(zhí)行本地FTP命令)的話,所有FTP命令都要加上/r/n<br> // ftpclient.sendServer("XMKD /test/bb/r/n"); //執(zhí)行服務(wù)器上的FTP命令<br> // ftpclient.readServerResponse一定要在sendServer后調(diào)用<br> // nameList("/test")獲取指目錄下的文件列表<br> // XMKD建立目錄,當(dāng)目錄存在的情況下再次創(chuàng)建目錄時(shí)報(bào)錯(cuò)<br> // XRMD刪除目錄<br> // DELE刪除文件<br> //通過遠(yuǎn)程命令 穿件一個(gè)files文件夾 ftpClient.sendServer( "MKD " + path + "\r\n" ); //這個(gè)方法必須在 這兩個(gè)方法中間調(diào)用 否則 命令不管用 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 ; } } |
KmConfig.java代碼如下:定義FTP服務(wù)器參數(shù),包括登錄的用戶名密碼之類的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
package ftpDemo; public class KmConfig { //主機(jī)ip private String FtpHost = "" ; //端口號(hào) 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; } } |
下面是測(cè)試代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package ftpDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; public class Test { public static void main(String[] args) { //設(shè)置ftp KmConfig km = new KmConfig(); km.setFtpHost( "..." ); km.setFtpPort(); km.setFtpUser( "test" ); km.setFtpPassword( "" ); km.setFtpPath( "KM" ); //上傳到ftp ftpUtil util= new ftpUtil(); File file = new File( "F:/文章.jpg" ); InputStream in; try { in = new FileInputStream(file); util.upLoadFileFtp(km, in, "更改后的名字.jpg" ); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
以上代碼是小編給大家介紹關(guān)于Java實(shí)現(xiàn)ftp上傳下載、刪除文件及在ftp服務(wù)器上傳文件夾的方法,希望大家喜歡。