|
一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上穿件文件夹、检 测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:
002 | import java.io.DataOutputStream; |
003 | import java.io.InputStream; |
004 | import java.io.OutputStream; |
005 | import sun.net.TelnetInputStream; |
006 | import sun.net.TelnetOutputStream; |
007 | import sun.net.ftp.FtpClient; |
008 | public class ftpUtil { |
010 | public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){ |
012 | String ftpHost = kmConfig.getFtpHost(); |
013 | int port = kmConfig.getFtpPort(); |
014 | String userName = kmConfig.getFtpUser(); |
015 | String passWord = kmConfig.getFtpPassword(); |
016 | String path = kmConfig.getFtpPath(); |
017 | FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 |
018 | ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 |
020 | ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 |
021 | TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名 |
022 | DataOutputStream dataOut = new DataOutputStream(telnetOut); |
023 | byte buffer[] = new byte[1024 * 1024]; |
025 | while ((count = is.read(buffer)) != -1) { |
026 | dataOut.write(buffer, 0, count); |
030 | ftpClient.closeServer(); |
031 | } catch (Exception e) { |
032 | System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动"); |
036 | public static void deleteFileFtp(KmConfig kmConfig,String fileName){ |
038 | String ftpHost = kmConfig.getFtpHost(); |
039 | int port = kmConfig.getFtpPort(); |
040 | String userName = kmConfig.getFtpUser(); |
041 | String passWord = kmConfig.getFtpPassword(); |
042 | String path = kmConfig.getFtpPath(); |
043 | FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 |
044 | ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 |
046 | ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 |
048 | ftpClient.sendServer("dele " + fileName + "\r\n"); |
049 | } catch (Exception e) { |
050 | System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动"); |
052 | ftpClient.closeServer(); |
053 | } catch (Exception e) { |
054 | System.out.println("删除文件失败!"); |
058 | public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){ |
060 | String ftpHost = kmConfig.getFtpHost(); |
061 | int port = kmConfig.getFtpPort(); |
062 | String userName = kmConfig.getFtpUser(); |
063 | String passWord = kmConfig.getFtpPassword(); |
064 | String path = kmConfig.getFtpPath(); |
065 | FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。 |
066 | ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码 |
068 | ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。 |
070 | TelnetInputStream in = ftpClient.get(fileName); |
071 | byte[] bytes = new byte[1024]; |
073 | while ((cnt=in.read(bytes,0,bytes.length)) != -1) { |
074 | outputStream.write(bytes, 0, cnt); |
076 | outputStream.close(); |
078 | } catch (Exception e) { |
079 | ftpClient.closeServer(); |
082 | ftpClient.closeServer(); |
083 | } catch (Exception e) { |
084 | System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动"); |
088 | public boolean createDir(String path,FtpClient ftpClient) throws Exception{ |
090 | ftpClient.cd("/home"); |
093 | //USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br> |
094 | // PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br> |
095 | // ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br> |
096 | // REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br> |
097 | // QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br> |
098 | // 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br> |
099 | // ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br> |
100 | // ftpclient.readServerResponse一定要在sendServer后调用<br> |
101 | // nameList("/test")获取指目录下的文件列表<br> |
102 | // XMKD建立目录,当目录存在的情况下再次创建目录时报错<br> |
105 | //通过远程命令 穿件一个files文件夹 |
106 | ftpClient.sendServer("MKD "+ path + "\r\n"); |
107 | //这个方法必须在 这两个方法中间调用 否则 命令不管用 |
109 | ftpClient.readServerResponse(); |
118 | public boolean isDirExist(String dir, FtpClient ftpClient) { |
121 | } catch (Exception e) { |
KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。
02 | public class KmConfig { |
04 | private String FtpHost = ""; |
08 | private String FtpUser = ""; |
10 | private String FtpPassword = ""; |
12 | private String FtpPath = ""; |
13 | public String getFtpHost() { |
16 | public void setFtpHost(String ftpHost) { |
19 | public int getFtpPort() { |
22 | public void setFtpPort(int ftpPort) { |
25 | public String getFtpUser() { |
28 | public void setFtpUser(String ftpUser) { |
31 | public String getFtpPassword() { |
34 | public void setFtpPassword(String ftpPassword) { |
35 | FtpPassword = ftpPassword; |
37 | public String getFtpPath() { |
40 | public void setFtpPath(String ftpPath) { |
下面是测试代码:
03 | import java.io.FileInputStream; |
04 | import java.io.FileNotFoundException; |
05 | import java.io.InputStream; |
07 | public static void main(String[] args) { |
09 | KmConfig km = new KmConfig(); |
10 | km.setFtpHost("172.20.32.48"); |
12 | km.setFtpUser("test"); |
13 | km.setFtpPassword("111111"); |
16 | ftpUtil util=new ftpUtil(); |
17 | File file = new File("F:/文章2.jpg"); |
20 | in = new FileInputStream(file); |
21 | util.upLoadFileFtp(km, in, "更改后的名字.jpg"); |
22 | } catch (FileNotFoundException e) { |
23 | // TODO Auto-generated catch block |
|
|
|