Java实现对ftp的读写文件
这里仅仅是对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) {
- }
- }
- }
- }
- }
很多知识点是相互联系的,希望以后的例子中能够结合更多的知识点进行实例编写,这样也有助于知识的巩固。
下面是我自己项目中用到的代码
/**
* 下载pdf文件
*/
public String downLoadPdf(String url,String contNo,String localPdfName){
String newUrl="";
String pathUrl="172.18.100.165"; //FTP服务器hostname
int port=21;//FTP服务器端口
String username="shwasextt20\\ftp"; //FTP登录账号
String password="qwerty1!"; //FTP登录密码
String remotePath="/Imagedownload";//FTP服务器上的相对路径
String fileName;//要下载的文件名
// String localPath="I:\\2015\\workspace\\workspace_newng\\wj\\WebContent\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
String localPath="C:\\project\\b2c\\cms.ear\\cms.war\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
// String localPath="C:\\B2C\\cms.ear\\cms.war\\wwwroot\\ng\\downLoad";//下载后保存到本地的路径
String localName = ""; Date date = new Date();
SimpleDateFormat dr = new SimpleDateFormat("yyyyMMddHHmmss"); //重命名(保单号+时间)
localName = localPdfName; if(!"".equals(url) && url !=null){
// String backUrl = "ftp://172.18.100.165/Imagedownload/0180050037-个险合同-电子合同-201537071208(66e735db-8ddf-4e0e-b70c-339544ff630b).PDF";
fileName = url.split("/")[4];
pathUrl = url.split("/")[2]; //生产环境ftp判断
if("172.16.252.100".equals(pathUrl)){
username = "shwasextp20\\ftp";
}else if("172.16.252.110".equals(pathUrl)){
username = "shwasextp21\\ftp";
}else{
username = "shwasextt20\\ftp";
} FTPClient ftp = new FTPClient();
try {
ftp.connect(pathUrl,port);
ftp.login(username,password);
System.out.println(ftp.isConnected());
ftp.enterLocalPassiveMode();
ftp.setControlEncoding("GBK");
ftp.setFileType(ftp.BINARY_FILE_TYPE);
ftp.changeWorkingDirectory(remotePath);
OutputStream outputStream = null;
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
if (ff.getName().equals(fileName)) {
InputStream in = ftp.retrieveFileStream(new String(ff.getName().getBytes("GBK"), "ISO-8859-1"));
int len = 0;
long size = 0;
byte[] bt = new byte[1024];
outputStream=new BufferedOutputStream(new FileOutputStream(localPath+"\\"+localName+".pdf"));
while ((len = in.read(bt)) > 0) { outputStream.write(bt, 0, len); // outputStream.flush();
size = size + len; // System.out.println(fileName + "已xiazai :" + size); }
newUrl = "cms/wwwroot/ng/downLoad/"+localName+".pdf";
outputStream.flush();
} }
outputStream.close();
ftp.logout();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return newUrl; }
Java实现对ftp的读写文件的更多相关文章
- Java实现对zip和rar文件的解压缩
通过java实现对zip和rar文件的解压缩
- java代码实现ftp服务器的文件上传和下载
java代码实现文件上传到ftp服务器: 1:ftp服务器安装: 2:ftp服务器的配置: 启动成功: 2:客户端:代码实现文件的上传与下载: 1:依赖jar包: 2:sftpTools 工具类: ...
- 使用POI来实现对Excel的读写操作
事实上我感觉直接贴代码就好了.代码里面差点儿做到每一行一个凝视.应该看起来会比較简单 代码托管在github上:https://github.com/chsj1/ExcelUtils package ...
- java使用类序列化反序列化(读写文件)
创建类:Role package com.wbg.springRedis.entity; import java.io.Serializable; public class Role implemen ...
- 使用jxl操作之一: 实现对Excel简单读写操作
项目目录树 对象类UserObject UserObject.java package com.dlab.jxl; public class UserObject { private String u ...
- Java实现对Mysql的图片存取操作
1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...
- Java 实现对Sql语句解析
原文地址:http://www.cnblogs.com/zcftech/archive/2013/06/10/3131286.html 最近要实现一个简易的数据库系统,除了要考虑如何高效的存储和访问数 ...
- Java实现对List去重
方式一,使用for循环遍历去除List中的重复元素代码如下 public static void main(String[] args) { Test07 test07 = new Test07(); ...
- Java实现对cookie的增删改查
原文地址:http://blog.csdn.net/k21325/article/details/54377830 @RequestMapping(value="meeting/addGua ...
随机推荐
- 让IE依据HTML头标签选择显示模式
文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...
- 可视化库-Matplotlib-Pandas与sklearn结合(第四天)
1. 计算每一种的比例的百分比 import pandas as pd from matplotlib.ticker import FuncFormatter np.random.seed(0) df ...
- Maven(四-2) Maven pom.xml 配置详解
转载于:http://niuzhenxin.iteye.com/blog/2042102 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述 ...
- 迷你MVVM框架 avalonjs 0.94发布
本版本主要做了如下改进: 优化ms-if的逻辑,现在描述DOM的顺序是 ms-skip, ms-important, ms-controller, ms-if ... 只要元素存在ms-skip 这个 ...
- linux 解析json
epel源 yum install jq ====================== [root@mhc NaHan-master]# curl 127.0.0.1:5000/v2/_catalog ...
- zookeeper的ZAB协议
ZAB协议概述 ZooKeeper并没有完全采用Paxos算法,而是使用了一种称为ZooKeeper Atomic Broadcast(ZAB,zookeeper原子消息广播协议)的协议作为其数据一致 ...
- 无生物学重复RNA-seq分析 CORNAS: coverage-dependent RNA-Seq analysis of gene expression data without biological replicates
无生物学重复RNA-seq分析 CORNAS: coverage-dependent RNA-Seq analysis of gene expression data without biologic ...
- 分布式理论系列(一)从 ACID 到 CAP 到 BASE
分布式理论系列(一)从 ACID 到 CAP 到 BASE 一.ACID 1.1 事务的四个特征: (1) Atomic(原子性) 事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程 ...
- Java 设计模式系列(十五)观察者模式(Observer)
Java 设计模式系列(十五)观察者模式(Observer) Java 设计模式系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Java ...
- 2016年,你读过的最好的IT技术书有哪几本?
def 程序员 原文 https://www.zhihu.com/question/54350343 陈硕 等 54 人赞同了该回答 1 知乎 陈硕大牛的 服务器多线程编程muduo 输的好不好可能更 ...