java使用ftp案例

讀取ftp圖片

//圖片所在位置
String picUrl = "./paperpic";
logger.info(picUrl);
//圖片名稱
String picName = "paper_001.Jpg";
response.reset();
OutputStream outputStream = response.getOutputStream();
//OutputStream outputStream = new FileOutputStream("e://paper_001.jpg");

FTPClient ftpClient = new FTPClient();
//連接ftp
ftpClient.connect("192.168.1.50", 21);
//登陸ftp
ftpClient.login("ftpuser", "abc123");
ftpClient.setBufferSize(1024);
// 設置文件類型(二進制)
ftpClient.changeWorkingDirectory(picUrl);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.retrieveFile(picName, outputStream);

outputStream.flush();  
outputStream.close();
ftpClient.disconnect();

向FTP服務器上傳文件

/**
 * Description: 向FTP服務器上傳文件
 * @param url
 *            FTP服務器hostname
 * @param port
 *            FTP服務器端口
 * @param username
 *            FTP登錄賬號
 * @param password
 *            FTP登錄密碼
 * @param path
 *            FTP服務器保存目錄
 * @param filename
 *            上傳到FTP服務器上的文件名
 * @param input
 *            輸入流
 * @return 成功返回true,否則返回false
 */
public static boolean uploadFile(String url, int port, String username,
		String password, String path, String filename, InputStream input) {
	boolean success = false;
	FTPClient ftp = new FTPClient();
	try {
		int reply;
		ftp.connect(url, port);// 連接FTP服務器
		// 如果採用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器
		ftp.login(username, password);// 登錄

		reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply)) {
			ftp.disconnect();
			return success;
		}
		ftp.setBufferSize(1024);
		boolean flag = ftp.changeWorkingDirectory(path);
		
		if (!flag) {
			ftp.makeDirectory(path);
			ftp.changeWorkingDirectory(path);
		}
		
		ftp.enterLocalPassiveMode();
		ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

		/*FTPFile[] files = ftp.listFiles("./");
		for (int i = 0; i < files.length; i++) {
			if (files[i].isFile()) {
				System.out.println(files[i].getName());
			} else {
				System.out.println(files[i].getName());
			}
		}*/

		ftp.storeFile(filename, input);

		input.close();
		ftp.logout();
		success = true;
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (ftp.isConnected()) {
			try {
				ftp.disconnect();
			} catch (IOException ioe) {
			}
		}
	}
	return success;
}

遍歷FTP服務器上的文件

/**
 * Description: 遍歷FTP服務器上的文件
 * @param url
 *            FTP服務器hostname
 * @param port
 *            FTP服務器端口
 * @param username
 *            FTP登錄賬號
 * @param password
 *            FTP登錄密碼
 * @param path
 *            FTP服務器保存目錄
 * @param filename
 *            上傳到FTP服務器上的文件名
 * @param input
 *            輸入流
 * @return 成功返回true,否則返回false
 */
public static boolean listFtpFile(String url, int port, String username,
		String password, String path, String filename, InputStream input) {
	boolean success = false;
	FTPClient ftp = new FTPClient();
	try {
		int reply;
		ftp.connect(url, port);// 連接FTP服務器
		// 如果採用默認端口,可以使用ftp.connect(url)的方式直接連接FTP服務器
		ftp.login(username, password);// 登錄

		reply = ftp.getReplyCode();
		if (!FTPReply.isPositiveCompletion(reply)) {
			ftp.disconnect();
			return success;
		}
		ftp.setBufferSize(1024);
		boolean flag = ftp.changeWorkingDirectory(path);
		
		if (!flag) {
			ftp.makeDirectory(path);
			ftp.changeWorkingDirectory(path);
		}
		
		ftp.enterLocalPassiveMode();
		ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

		FTPFile[] files = ftp.listFiles("./");
		for (int i = 0; i < files.length; i++) {
			if (files[i].isFile()) {
				System.out.println(files[i].getName());
			} else {
				System.out.println(files[i].getName());
			}
		}

		//ftp.storeFile(filename, input);

		input.close();
		ftp.logout();
		success = true;
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (ftp.isConnected()) {
			try {
				ftp.disconnect();
			} catch (IOException ioe) {
			}
		}
	}
	return success;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章