Java 프로그램 개발에서 FTP는 더 자주 사용되며 종종 파일을 FTP 서버에 업로드하고 다운로드하는 등 다루는 것입니다. 이 기사에서는 자카르타 커먼즈 (Commons-Net 패키지)에서 FTPClient를 사용하여 파일을 업로드하고 다운로드하는 방법을 소개합니다.
1. 파일 업로드
원칙을 소개하지 않을 것입니다. 코드를 직접 읽으십시오.
/** * 설명 : FTP 서버 * @version1.0 2008 년 7 월 27 일 4:31:09 pm by cui hongbao ([email protected]) cui hongbao ([email protected])에 파일을 업로드하십시오 * @param url ftp 서버 호스트 이름 * @param port ftp server port * @param username ftp login 계정 * @param server passport * @param path passport * @param filename ftp server에 업로드* @param 입력 입력 스트림* @return true를 성공적으로 반환합니다. 그렇지 않으면 false*/ publicstaticboolean uploadfile (문자열 URL, int 포트, 문자열 비밀번호, 문자열 경로, 문자열 파일 이름, 입력 입력) {boolean success = false; ftpclient ftp = 새로운 ftpclient (); {int reply; ftp.connect (url, port); // ftp 서버를 연결 // 기본 포트를 사용하는 경우 ftp.connect (url)를 사용하여 FTP 서버에 직접 연결할 수 있습니다. ftp.login (username, password); // login reply = ftp.getReplyCode (); if (! ftpReply.ispositiveCoMpletion (답장)) {ftp.disconnect (); 반환 성공; } ftp.changeworkingDirectory (Path); ftp.storefile (파일 이름, 입력); input.close (); ftp.logout (); 성공 = 참; } catch (ioexception e) {e.printstacktrace (); } 마침내 {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioexception ioe) {}}} 반환 성공; } <pre> < /pre> /*** 설명 : FTP 서버에 파일을 업로드* @version1.0 2008 년 7 월 27 일 4:31:09 pm cui hongbao ([email protected]) 작성* @param url ftp server hostname* @param port ftp server port* @param posperal formation fardin fardin acperin 계정. FTP 서버 저장 디렉토리* @param filename ftp 서버에 업로드* @param 입력 입력 스트림* @return true false*/public static boolean uploadfile (문자열 URL, int port, 문자열 사용자 이름, 문자열 경로, 문자열 파일 이름, inputstream 입력) 답장; ftp.connect (url, port); // ftp 서버를 연결 // 기본 포트를 사용하는 경우 ftp.connect (url); ftp.login (username, password)을 사용하여 FTP 서버에 직접 연결할 수 있습니다. {ftp.disconnect (); return success;} ftp.changeworkingdirectory (path); ftp.storefile (filename, input); input.close (); ftp.logout (); success = true;} catch (ioexception e) {e.printstacktrace ();} finally {if (ftp.isconnected ()) {try {ftp.disconnect ();} catch (ioxception ioe) {}}}}}.
두 가지 작은 예를 작성해 봅시다.
1. 로컬 파일을 FTP 서버에 업로드하면 코드는 다음과 같습니다.
@Test PublicVoid testuploadfromdisk () {try {fileInputStream in = new FileInputStream (새 파일 ( "d : /test.txt")); 부울 플래그 = uploadfile ( "127.0.0.1", 21, "test", "test", "d :/ftp", "test.txt", in); System.out.println (플래그); } catch (filenotfoundException e) {e.printstacktrace (); }} <pre> </pre> @testpublic void testuploadfromdisk () {try {fileInputStream in = new FileInputStream (새 파일 ( "d : /test.txt")); boolean flag = uploadfile ( "127.0.0.1", 21, ","test ","test " in); system.out.println (flag);} catch (filenotfoundException e) {e.printstacktrace ();}} 2. FTP 서버에서 파일을 생성하고 파일에 문자열을 씁니다.
@Test PublicVoid testuploadfromString () {try {inputStream input = new ByTearRayInputStream ( "테스트 ftp".getBytes ( "UTF-8")); 부울 플래그 = uploadfile ( "127.0.0.1", 21, "test", "test", "d :/ftp", "test.txt", 입력); System.out.println (플래그); } catch (UnsupportedEncodingException e) {e.printstacktrace (); }} <pre> </pre> @testpublic void testuploadfromString () {try {inputStream input = new ByTearRayInputStream ( "테스트 ftp".getBytes ( "utf-8")); 부울 플래그 = uploadfile ( "127.0.1", 21, "test", "d :/ft" "test.txt", input); system.out.println (flag);} catch (UnsupportedencodingException e) {e.printstacktrace ();}} 2. 파일을 다운로드하십시오
FTP 서버에서 파일을 다운로드하기위한 코드도 매우 간단합니다. 다음과 같이 참조하십시오.
/*** 설명 : FTP Server* @version에서 파일을 다운로드합니다. Jul, :: PM Cui Hongbao ([email protected]) 작성* @param url ftp server hostname* @param port ftp server port* @param username ftp 로그인 계정* @param 비밀번호 ftp 비밀번호* @param Remotepath ongative filename filename 이름을 다운로드하십시오. 다운로드 후 * @return */ publicstaticboolean downfile (문자열 URL, int port, 문자열 사용자 이름, 문자열 암호, 문자열 remotepath, 문자열 파일 이름, 문자열 로컬 경로) {부울 성공 = 거짓; ftpclient ftp = 새로운 ftpclient (); {int reply; ftp.connect (URL, 포트); // 기본 포트를 사용하는 경우 ftp.connect (url)를 사용하여 FTP 서버에 직접 연결할 수 있습니다. ftp.login (username, password); // login reply = ftp.getReplyCode (); if (! ftpReply.ispositiveCoMpletion (답장)) {ftp.disconnect (); 반환 성공; } ftp.changeworkingDirectory (remotepath); // ftp 서버 디렉토리로 전송 ftpfile [] fs = ftp.listfiles (); for (ftpfile ff : fs) {if (ff.getname (). equals (filename)) {file localfile = 새 파일 (localPath+"/"+ff.getName ()); outputStream은 = 새 파일 아웃 putStream (localfile); ftp.retrievefile (ff.getName (), is); is.close (); }} ftp.logout (); 성공 = 참; } catch (ioexception e) {e.printstacktrace (); } 마침내 {if (ftp.isconnected ()) {try {ftp.disconnect (); } catch (ioexception ioe) {}}} 반환 성공; } <pre> </pre>