知识大全 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包进行比较分析

对JAVA的两个FTP包进行比较分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ftp*; 

知识大全 Java FTP客户端类库比较

JavaFTP客户端类库比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  「导读」本文介绍了在

知识大全 Java上传文件(简单例子)

Java上传文件(简单例子)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  jsp页面  <

知识大全 JAVA编程语言开发下载文件

JAVA编程语言开发下载文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [java]  /*

知识大全 Java文件上传相关知识及得到后缀名

Java文件上传相关知识及得到后缀名  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文件上传功能

知识大全 用Java制作网络文件下载系统

用Java制作网络文件下载系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于Linux操作

知识大全 Java利用HttpURLConnection发送post请求上传文件

Java利用HttpURLConnection发送post请求上传文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 Java防止浏览器直接打开下载的文件

Java防止浏览器直接打开下载的文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这个其实是在

知识大全 Java实现基于http协议的网络文件下载

Java实现基于http协议的网络文件下载  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  HTT

知识大全 Java 文件分块上传服务器端源代码

Java文件分块上传服务器端源代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  直接上代码接收