Java完成ftp上傳下載、刪除文件及在ftp辦事器上傳文件夾的辦法。本站提示廣大學習愛好者:(Java完成ftp上傳下載、刪除文件及在ftp辦事器上傳文件夾的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成ftp上傳下載、刪除文件及在ftp辦事器上傳文件夾的辦法正文
一個JAVA 完成FTP功效的代碼,包含了辦事器的設置模塊,並包含有上傳文件至FTP的通用辦法、下載文件的通用辦法和刪除文件、在ftp辦事器上傳文件夾、檢測文件夾能否存在等,外面的有些代碼對編寫JAVA文件上傳也許有參考價值,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 + "\r\n"); } 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 + "\r\n"); //這個辦法必需在 這兩個辦法中央挪用 不然 敕令不論用 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辦事器參數,包含登錄的用戶名暗碼之類的。
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; } }
上面是測試代碼:
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) { //設置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(); } } }
以上代碼是小編給年夜家引見關於Java完成ftp上傳下載、刪除文件及在ftp辦事器上傳文件夾的辦法,願望年夜家愛好。