FTP实现上传下载,解决了编码问题。
很多人都碰到ftp的上传下载文件的实现,很容易碰到一些问题,最难解决的是乱码的问题,在网上搜索了挺多,也没人能讲得清楚详细的,这里把自己实现的程序贴出来,供大家参考。
以后碰到这些问题,可以自己多看看java的API,还是很有帮助的。
另外在实现ftp上传下载的时候,还要多考虑一下上传下载失败或者网络连接断开的问题,
这需要不同情况不同的处理了,这里不作描述了。
1>解决乱码的关键
FtpClient的默认编码格式ISO-8859-1,很多地方都提到了sun.NetworkClient类中的encoding属性,
能设置ftp的编码格式,但这个属性是不能直接访问的,可以通过继承FtpClient类的方式来访问;
/**
*
* <p>Title: FtpOperation.java</p>
* <p>Description: 为了改变FtpClient的默认编码格式ISO-8859-1为utf-8(或GBK)支持中文,实现了此类继承FtpClient</p>
* <p>Copyright: Copyright (c) 2009</p>
* <p>Com pany: </p>
* @author
* @version1.0
*
*/
public class Custom FtpClient ex tends FtpClient {
private Custom FtpClient() {
super();
}
/**
* 初始化时必须指定服务器的编码格式
* @param encodingStr
*/
protected Custom FtpClient(String encodingStr) {
super();
ding =encodingStr;
}
/
**
* 设置连接编码
* @param encodingStr
* void
*
*/
protected void setEncoding(String encodingStr) {
ding =encodingStr;
}
/**
* 取得编码格式
* @return
* String
*
*/
protected String getEncoding() {
return ding ;
}
}
2. 这个类就是ftp上传下载的处理类,主要是注意对连接的处理和一些细节问题,也比较简单,就是要仔细点,这里不啰嗦了。
/**
*
* <p>
* Title: FtpUtils.java
* </p>
* <p>
* Description: FTP相关的操作类,提供ftp登录、ftp上传文件、ftp下载文件等功能<br/>  * 使用说明:<br/>
* FtpUtil ftp =new FtpUtil("localhost", "test", "test", "GBK","test", 21); //初始化信息<br/>
* tServer();<br/>
*  如果需要以ascii格式操作,要调用方法ftp.ftpClient.ascii();<br/>
* **ftp的相关操作**<br/>
* ftp.closeConnect();<br/>
* </p>
* <p>
* Copyright: Copyright (c) 2009
* </p>
* <p>
* Com pany:
* </p>
*
* @author
* @version1.0
*
*/
public class FtpUtil {
private String serverIp =""; // 服务器ip
private String userNam e =""; // 登录服务器用户名
private String password =""; // 登录服务器密码
private String path =""; // 服务器路径
private int serverPort =-1; // 服务器端口号
private String encoding ="GBK"; //服务器端编码格式
protected Custom FtpClient ftpClient =null;
OutputStream os =null;
FileInputStream is =null;
/**
* 构造函数,用配置文件asiainfo.properties中配置的ftp信息进行操作,
* 需要设置服务器的编码格式PLANDEMO_FTP_ENCODING="GBK"(ftp服务器编码格式)。
* @param encodingStr
connect下载* @throws Ex ception
*/
public FtpUtil() throws Ex ception {
try{
this.serverIp =Instance().getProperty(
"PLANDEMO_FTP_SERVER"); // 默认服务器
this.userNam e =Instance().getProperty(
"PLANDEMO_FTP_USERNAME"); // 默认用户
this.password =Instance().getProperty(
"PLANDEMO_FTP_PASSWORD"); // 默认密码
this.path =Instance().getProperty("PLANDEMO_FTP_DIR "); // 默认路径
} catch(Ex ception ex) {
}
}
/**
* 构造函数用传入的参数进行ftp操作,必须确定ftp服务器的编码格式
* @param ip
*  服务器ip地址
* @param nam e
*  登录服务器用户名
* @param pwd
*  登录服务器密码
* @param encodingStr ftp服务器的编码格式
* @param defPath
*  服务器设置的路径,为空则为默认设置的路径

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。