×
文章路径: Java

Java FTP下载文件

发表于3年前(Dec 24, 2014 1:49:20 PM)  阅读 313  评论 0

分类: Java

标签: FtpClient ftp下载 retrieveFileStream

Java如何FTP文件上传,可以参见我的这篇文章"java上传文件到ftp"。这次要讲的是如何用Apache提供的FTPClient来下载文件。

FTPClient里面有这么一个方法:
InputStream org.apache.commons.net.ftp.FTPClient.retrieveFileStream(String remote) throws IOException
这个方法就可以返回文件的输入流,有了他我们就可以读取文件内容,以文本文件为例:

public static StringBuffer downloadATxtFile(String server,String userName, String userPassword, String path, String fileName) {
		FTPClient ftpClient = new FTPClient();
		StringBuffer fileContent = new StringBuffer();
		try {
			ftpClient.connect(server);
			ftpClient.login(userName, userPassword);
			ftpClient.changeWorkingDirectory(path);
//			ftpClient.setControlEncoding(TopologyConfig.getFTPCode());
			InputStream is = ftpClient.retrieveFileStream(new String(fileName.getBytes(TopologyConfig.getFTPCode()), "iso-8859-1"));
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			String str = "";
			while((str=br.readLine())!=null) {
				fileContent.append(str+"\n");
			}
			is.close();
		} catch (Exception e) {
			log.error("ftp下载失败");
			log.error(FtpUploadUtil.class, e);
			return null;
		} finally {
			if(ftpClient.isConnected()) {
				try {
					ftpClient.disconnect();
					log.info("关闭ftp连接");
				} catch (Exception e) {
					log.error("ftp连接关闭失败");
					log.error(FtpUploadUtil.class, e);
				}
			}
		}
		return fileContent;
	}

	public static void main(String[] args) {
		String str = downloadATxtFile(TopologyConfig.getFtpHost(), TopologyConfig.getFtpUserName(), TopologyConfig.getFtpUserPassword(), "svg", "绿景华庭_华1_.svg").toString();
		System.out.println(str);
	}
如果是二进制文件或者是图片,只要用相应的流来包装InputStream即可。

发表评论