Java實現對ftp的讀寫檔案(apache.commons.net.ftp)
阿新 • • 發佈:2019-01-07
這裡僅僅是對ftp工具類的簡單使用,很多東西還不是很瞭解。當然學以致用,先用到這裡吧。
很多知識點是相互聯絡的,希望以後的例子中能夠結合更多的知識點進行例項編寫,這樣也有助於知識的鞏固。public class FtpTest { /** * 向ftp寫檔案(資料) */ @Test public void uploadFile() { // 要寫入的檔案內容 String fileContent = "hello world,你好世界"; // ftp登入使用者名稱 String userName = "admin"; // ftp登入密碼 String userPassword = "xxxx"; // ftp地址 String server = "127.0.0.1";//直接ip地址 // 建立的檔案 String fileName = "ftp.txt"; // 指定寫入的目錄 String path = "wd"; FTPClient ftpClient = new FTPClient(); try { InputStream is = null; // 1.輸入流 is = new ByteArrayInputStream(fileContent.getBytes()); // 2.連線伺服器 ftpClient.connect(server); // 3.登入ftp ftpClient.login(userName, userPassword); // 4.指定寫入的目錄 ftpClient.changeWorkingDirectory(path); // 5.寫操作 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.storeFile(new String(fileName.getBytes("utf-8"), "iso-8859-1"), is); is.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } } /** * ftp下載資料 */ @Test public void downFile() { // ftp登入使用者名稱 String userName = "admin"; // ftp登入密碼 String userPassword = "xxxx"; // ftp地址:直接IP地址 String server = "xxxx"; // 建立的檔案 String fileName = "ftp.txt"; // 指定寫入的目錄 String path = "wd"; // 指定本地寫入檔案 String localPath="D:\\"; FTPClient ftp = new FTPClient(); try { int reply; //1.連線伺服器 ftp.connect(server); //2.登入伺服器 如果採用預設埠,可以使用ftp.connect(url)的方式直接連線FTP伺服器 ftp.login(userName, userPassword); //3.判斷登陸是否成功 reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); } //4.指定要下載的目錄 ftp.changeWorkingDirectory(path);// 轉移到FTP伺服器目錄 //5.遍歷下載的目錄 FTPFile[] fs = ftp.listFiles(); for (FTPFile ff : fs) { //解決中文亂碼問題,兩次解碼 byte[] bytes=ff.getName().getBytes("iso-8859-1"); String fn=new String(bytes,"utf8"); if (fn.equals(fileName)) { //6.寫操作,將其寫入到本地檔案中 File localFile = new File(localPath + ff.getName()); OutputStream is = new FileOutputStream(localFile); ftp.retrieveFile(ff.getName(), is); is.close(); } } ftp.logout(); } catch (IOException e) { e.printStackTrace(); } finally { if (ftp.isConnected()) { try { ftp.disconnect(); } catch (IOException ioe) { } } } } }