知识大全 Java做的比较完善的FTP连接上传下载文件
Posted 文件
篇首语:知识是果树,知识的应用就是果树上结的果实。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java做的比较完善的FTP连接上传下载文件相关的知识,希望对你有一定的参考价值。
Java做的比较完善的FTP连接上传下载文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
这是偶第一次写java程序实现公司要求的FTP数据同步 所有原代码如下 以供各位参考并提出宝贵意见!另外俺还有两个功能没有实现 有请高手指点一二 如何删除FTP服务器上已经下载过的文件? 如何将上传的文件改名?上传时在文件名前加 temp_ 上传完毕后需要把文件名改回来 如何使用openPassiveDataConnection()方法将ftp连接更改为主动连接 因为要从unix系统配置的ftp服务器下载文件的话 就需要主动连接
/*
*******************************************************************************************************
Filename: ftp java
Author: leetsing(elove)
Create date:
Use: connect to FTP server then upload and download file
Modify date: add to upload file
add to download file
Copy right: Magisky Media Technology Co Ltd
*******************************************************************************************************
*/
//import cz dhl io *;
//import cz dhl ftp *;
import ftp *;
import *;
import java applet *;
import java io *;
import java io IOException;
import java util StringTokenizer;
import ftp FtpClient;
import java util ArrayList;
public class ftp extends Applet
FtpClient aftp;
DataOutputStream outputs ;
TelnetInputStream ins;
TelnetOutputStream outs;
int ch;
public String a;
String hostname= ;
private String path = / ;
public static void main(String[] args)
String hostname = ;
int port = ;
String uid = lee ;
String pwd = lee ;
String RWFileDir = D:\\\\smsftp\\\\ ;//文件目录
//连接ftp服务器
ftp ft = new ftp();
nnect(RWFileDir hostname port uid pwd);
//下载文件
if (ft aftp != null)
try
ft getNameList(RWFileDir);
catch(IOException e)
System out println( 下载文件出错 +e);
//上传文件
if (ft aftp != null)
String sdir = RWFileDir + subunsubfromsp\\\\ ;
File fdir = new File(sdir);
String FileName = ;
for(int i= ;i FileName = sdir + (fdir list());
ft uploadFile(RWFileDir FileName);
//System out println( 成功上传的文件 );
//ft showFileContents( subunsubfromsp\\\\ );
//删除subunsubfromsp目录下已经上传的文件文件
// ft deleFile(RWFileDir);
//断开服务器连接
ft stop(RWFileDir);
public FtpClient connect(String RWFileDir String hostname int port String uid String pwd)
this hostname = hostname;
System out println( 正在连接 +hostname+ 请等待 );
try
aftp = new FtpClient(hostname port);
aftp login(uid pwd);
aftp binary();
//aftp openPortDataConnection();
a = 连接主机: +hostname+ 成功! ;
System out println(a);
catch(FtpLoginException e)
a= 登陆主机: +hostname+ 失败!请检查用户名或密码是否正确 +e;
System out println(a);
//return false;
catch (IOException e)
a= 连接主机: +hostname+ 失败!请检查端口是否正确 +e;
System out println(a);
//return false;
catch(SecurityException e)
a= 无权限与主机: +hostname+ 连接!请检查是否有访问权限 +e;
System out println(a);
//return false;
log(RWFileDir a);
return aftp;
public void stop(String RWFileDir)
String message = ;
try
if(aftp!=null)
aftp closeServer();
message = 与主机 +hostname+ 连接已断开! ;
System out println(message);
log(RWFileDir message);
catch(IOException e)
message = 与主机 +hostname+ 断开连接失败! +e;
System out println(message);
log(RWFileDir message);
public boolean downloadFile(String RWFileDir String filepathname)
boolean result=true;
String message = ;
if (aftp != null)
System out println( 正在下载文件 +filepathname+ 请等待 );
String badfile = filepathname substring(filepathname length() filepathname length());
String badlog = filepathname substring(filepathname length() filepathname length());
String baddir = ;
if ((pareTo( bad ) != ) && (pareTo( badlog ) != ))
baddir = subunsubtosp\\\\ ;
else
baddir = bad\\\\ ;
String strdir = subunsubtosp\\\\ ;
//System out println(RWFileDir + baddir + filepathname);
try
//FtpClient fc=new FtpClient( );
//fc login( lee lee );
int ch;
File fi = new File(RWFileDir + baddir + filepathname);
//aftp cd(strdir);
RandomAccessFile getFile = new RandomAccessFile(fi rw );
getFile seek( );
TelnetInputStream fget=aftp get(strdir+filepathname);
DataInputStream puts = new DataInputStream(fget);
while ((ch = puts read()) >= )
getFile write(ch);
//s delete();
fget close();
getFile close();
//fc closeServer();
message = 下载 +filepathname+ 文件到 +baddir + 目录成功! ;
System out println(message);
log(RWFileDir message);
catch(IOException e)
message = 下载 +filepathname+ 文件到 +baddir + 目录失败! +e;
System out println(message);
log(RWFileDir message);
result = false ;
else
result = false;
return result;
public boolean uploadFile(String RWFileDir String filepathname)
boolean result=true;
String message = ;
if (aftp != null)
System out println( 正在上传文件 +filepathname+ 请等待 );
try
String fg =new String( \\\\subunsubfromsp\\\\ );
int index = filepathname lastIndexOf(fg);
String filename = filepathname substring(index+ );
File localFile = new File(filepathname) ;
RandomAccessFile sendFile = new RandomAccessFile(filepathname r );
//
sendFile seek( );
//改名上传temp_
filename = filename substring( )+ temp_ +filename substring( filename length());
outs = aftp put(filename);
outputs = new DataOutputStream(outs);
while (sendFile getFilePointer() < sendFile length() )
ch = sendFile read();
outputs write(ch);
rename(filename substring( filename length()) filename substring( filename length()));
outs close();
sendFile close();
message = 上传 +filepathname+ 文件成功! ;
System out println(message);
log(RWFileDir message);
catch(IOException e)
message = 上传 +filepathname+ 文件失败! +e;
System out println(message);
log(RWFileDir message);
result = false ;
else
result = false;
return result;
public void rename(String oldName String newName)
//aftp renameTo(oldName newName);
File Old = new File(oldName); //oldName
File New = new File(newName); //newName
//aftp renameTo(New);
//boolean Old renameTo(File newName);
//System out println(Old);
//System out println(New);
public static void deleFile(String RWFileDir)
//try
//取得ReadFile目录下的txt文件
String sdir = RWFileDir + subunsubfromsp\\\\ ;
File fdir = new File(sdir);
String FileName = ;
int j = fdir list() length;
System out println(sdir+ 目录下要删除的文件数 +fdir list() length);
File file;
for(int i= ;i
//删除subunsubfromsp中的txt文件
FileName = RWFileDir + subunsubfromsp\\\\ + (fdir list())[ ];
file = new File(FileName);
file delete();
System out println( 已经成功删除 +FileName+ 文件! );
//
//catch (IOException e)
// System out println( 删除txt文件错误! );
// e printStackTrace();
//
public void showFileContents(String strdir)
StringBuffer buf = new StringBuffer();
try
aftp cd(strdir);
ins= aftp list();
while ((ch=ins read())>= )
buf append((char)ch);
System out println(buf toString());
ins close();
catch(IOException e)
// 返回当前目录的所有文件及文件夹
public ArrayList getFileList() throws IOException
BufferedReader dr = new BufferedReader(new InputStreamReader(aftp list()));
ArrayList al = new ArrayList();
String s = ;
while ( (s = dr readLine()) != null)
al add(s);
return al;
public void setPath(String path) throws IOException
if (aftp == null)
this path = path;
else
aftp cd(path);
// 返回当前目录的文件名称
public ArrayList getNameList(String RWFileDir) throws IOException
BufferedReader dr = new BufferedReader(new InputStreamReader(aftp nameList( subunsubtosp\\\\ )));
ArrayList al = new ArrayList();
String s = ;
while ( (s = dr readLine()) != null)
al add(s);
s = s substring( s length());
isFile(s);
downloadFile(RWFileDir s);
//String strFileDelF = aftp nameList( subunsubtosp\\\\ );
File fileDelF=new File(s);
fileDelF delete();
return al;
//System out println(al add(s));
// 判断一行文件信息是否为目录
public boolean isDir(String line)
return ( (String) parseLine(line) get( )) indexOf( d ) != ;
public boolean isFile(String line)
return!isDir(line);
// 处理getFileList取得的行信息
private ArrayList parseLine(String line)
ArrayList s = new ArrayList();
StringTokenizer st = new StringTokenizer(line );
while (st hasMoreTokens())
s add(st nextToken());
return s ;
//写消息日志
public static void log(String RWFileDir String msg)
String message = ;
try
java text DateFormat df = new java text SimpleDateFormat( yyyy MM dd HH:mm:ss );
java text DateFormat dflog = new java text SimpleDateFormat( yyyyMMdd );
java util Date date = new java util Date() ;
String datestr = df format(new java util Date()) ;
String datelog = dflog format(new java util Date()) ;
//String datelog = datestr substring( );
//datelog = datelog replace( );
//按日期每天生成一个日志文件
FileWriter fwl = new FileWriter(RWFileDir + CMSSftp +datelog+ log true);
PrintWriter outl = new PrintWriter(fwl);
outl println(datestr + + msg);
outl close();
fwl close();
catch (IOException e)
message = 写log文件错误! +e;
e printStackTrace();
log(RWFileDir message);
System out println(message);
cha138/Article/program/Java/hx/201311/26458
相关参考
对JAVA的两个FTP包进行比较分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ftp*;
JavaFTP客户端类库比较 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 「导读」本文介绍了在
Java上传文件(简单例子) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! jsp页面 <
JAVA编程语言开发下载文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! [java] /*
Java文件上传相关知识及得到后缀名 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 文件上传功能
用Java制作网络文件下载系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 由于Linux操作
知识大全 Java利用HttpURLConnection发送post请求上传文件
Java利用HttpURLConnection发送post请求上传文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
Java防止浏览器直接打开下载的文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这个其实是在
Java实现基于http协议的网络文件下载 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! HTT
Java文件分块上传服务器端源代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 直接上代码接收