您的位置:首页 > 编程语言 > Java开发

JDK1.7以上javaFTP上传删除文件的实现方法

2017-11-27 11:45 881 查看
packagecom.itv.launcher.util;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.net.InetSocketAddress;
importjava.util.Properties;
importjava.util.StringTokenizer;
importsun.net.TelnetOutputStream;
importsun.net.ftp.FtpClient;
importsun.net.ftp.FtpProtocolException;
/**
*
FTP上传工具类
*
*
@author yanzhou
*
@version v1.0
*/
publicclass
FTPUtil {
privatestatic
FtpClient ftpClient = null;
privatestatic
final
String url;
privatestatic
final
int
port;
privatestatic
final
String user;
privatestatic
final
String password;
privatestatic
final
String remoteFilePath;
static{
Properties
FTPPro = ReadFTPProperties.getMsgFromPro();
url
= FTPPro.getProperty("FTP_URL");
port
= Integer.parseInt(FTPPro.getProperty("FTP_PORT"));
user
= FTPPro.getProperty("FTP_USER");
password
= FTPPro.getProperty("FTP_PASSWORD");
remoteFilePath
= FTPPro.getProperty("FTP_REMOTE_FILEPATH");
}
/**
*
链接FTP
*
@throws FtpProtocolException
*/
privatestatic
void
connectFTP() throwsFtpProtocolException
{
try{
ftpClient
= FtpClient.create();
ftpClient.connect(newInetSocketAddress(url,
port));
ftpClient.login(user,
password.toCharArray());
ftpClient.setBinaryType();
if(!"".equals(remoteFilePath)
&& remoteFilePath != null)
{
ftpClient.changeDirectory(remoteFilePath);
}
}catch(IOException
e) {
e.printStackTrace();
}
}
/**
*
关闭FTP链接
*/
publicstatic
void
closeFTP() {
try{
if(ftpClient
!= null)
{
ftpClient.close();
}
}catch(IOException
e) {
e.printStackTrace();
}
}
/**
*
上传文件到FTP
*
@param file file文件,struts2从页面得到的File类型
*
@param filePath 要保存在FTP上的路径(文件夹)
*
@param fileName 文件名(test001.jpg)
*
@return 文件是否上传成功
*
@throws Exception
*/
publicstatic
boolean
upload(File file, String filePath, String fileName) {
TelnetOutputStream
to = null;
FileInputStream
fi = null;
filePath
= remoteFilePath + Constants.FILE_SEPARATOR + filePath;
try{
if(file
!= null)
{
connectFTP();
if(!isDirExist(filePath.replace("\\","/")))
{
createDir(filePath.replace("\\","/"));
ftpClient.changeDirectory(filePath.replace("\\","/"));
}
fi
= newFileInputStream(file);
to
= (TelnetOutputStream) ftpClient.putFileStream(fileName, true);
byte[]
bytes = newbyte[1024];
inti
= fi.read(bytes);
while(i
!= -1)
{
to.write(bytes);
i
= fi.read(bytes);
}
}
returntrue;
}catch(FileNotFoundException
e1) {
returnfalse;
}catch(IOException
e2) {
returnfalse;
}catch(Exception
e) {
returnfalse;
}finally{
if(fi
!= null)
{
try{
fi.close();
}catch(IOException
e) {
e.printStackTrace();
}
}
if(to
!= null)
{
try{
to.flush();
to.close();
}catch(IOException
e) {
e.printStackTrace();
}
}
closeFTP();
}
}
/**
*
删除FTP制定目录下的文件
*
@param filePath 文件在FTP存储的路径
*
@param fileName 要删除的文件名称
*
@return 是否删除成功
*/
publicstatic
boolean
deleteFileFtp(String filePath, String fileName){
try{
connectFTP();
filePath
= remoteFilePath + Constants.FILE_SEPARATOR + filePath + Constants.FILE_SEPARATOR;
if(!isDirExist(filePath.replace("\\","/")))
{
returnfalse;
}
ftpClient.changeDirectory(filePath.replace("\\","/"));
ftpClient.deleteFile(fileName);
returntrue;
}catch(Exception
e) {
e.printStackTrace();
returnfalse;
}finally{
closeFTP();
}
}
/**
*
检查文件夹是否存在
*
*
@param dir
*
@param ftpClient
*
@return
*/
privatestatic
Boolean isDirExist(String dir) {
try{
ftpClient.changeDirectory(dir);
}catch(Exception
e) {
returnfalse;
}
returntrue;
}
/**
*
创建文件夹
*
*
@param dir
*
@param ftpClient
*
@throws Exception
*/
privatestatic
void
createDir(String dir) throwsException
{
ftpClient.setAsciiType();
StringTokenizer
s = newStringTokenizer(dir,
"/");//
sign
s.countTokens();
String
pathName = "";
while(s.hasMoreElements())
{
pathName
= pathName + "/"+
(String) s.nextElement();
try{
ftpClient.makeDirectory(pathName);
}catch(Exception
e) {
e
= null;
}
}
ftpClient.setBinaryType();
}
}

2. 常量类,系统的路径分隔符

packagecom.itv.launcher.util;
publicinterface
Constants {
//路径分隔符
publicstatic
String FILE_SEPARATOR = System.getProperty("file.separator");
}

3. FTP链接的配置properties文件,包括用户名密码一些信息    

#FTP的IP地址
FTP_URL=127.0.0.1
#FTP端口号
FTP_PORT=1234
#用户名
FTP_USER=yanzhou
#密码
FTP_PASSWORD=abcdefg12345
#FTP账号目录
FTP_REMOTE_FILEPATH=

以上这篇JDK1.7以上javaFTP上传删除文件的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java ftp 删除文件 JDK1.7