`

JAVA写文件到FTP的几种方法

    博客分类:
  • JESE
阅读更多

 

1.使用URL:

URL url = new  URL( " ftp://javaa:javaa@172.168.2.222:21/test/javaa.txt " );
PrintWriter pw
= new  PrintWriter(url.openConnection().getOutputStream());
pw.write(
" this is a test " );
pw.flush();
pw.close();

上面是代码的片断,其中URL构造函数的参数可以用不同的访问协议(比如http,ftp等),"//"后跟着的是用户名和密码,两者用":"隔 开,紧跟着是分隔符"@","@"以后的是IP地址和端口,然后是目录,最后才是我们要写入的文件名,其中目录是必须存在的,否则会抛出 FileNotFoundException,文件可以是不存在的,不存在的时候就会新建文件,否则就会用新的内容覆盖以前的内容;

2.使用FtpClient:

FtpClient ftpClient = new  FtpClient();
ftpClient.openServer(
" 172.168.2.222 " , 21 ); // IP地址和端口
ftpClient.login( " javaa " , " javaa " ); // 用户名和密码,匿名登陆的话用户名为anonymous,密码为非空字符串
ftpClient.cd( " test " ); // 切换到test目录
PrintWriter pw = new  PrintWriter(ftpClient.put( " javaa.txt " )); // 写入的文件名
pw.write( " this is a test " );
pw.flush();
pw.close();

3.用PASV模式传送数据的FtpClient
import  sun.net.ftp.FtpClient;
import  java.net.Socket;
import  java.io.IOException;

public   class  PasvFtpClient
    
extends  FtpClient{

  
/**
   * FTP服务器的地址
   
*/
  
private  String serverAddr;
  
/**
   * 连接到FTP服务器的Socket
   
*/
  
private  Socket socket;
  
/**
   * 仿造父类定义的静态变量
   
*/
  
protected   final   static   int  FTP_ERROR = 3 ;
  
/**
   * 仿造父类定义的静态变量
   
*/
  
protected   final   static   int  FTP_SUCCESS = 1 ;

  
public  PasvFtpClient(String s)  throws  IOException{
    
super (s);
    serverAddr
= s;
    socket
= null ;
  }

  
public  PasvFtpClient(String s, int  i)  throws  IOException{
    
super (s,i);
    serverAddr
= s;
    socket
= null ;
  }

  
public  PasvFtpClient(){
    
super ();
    socket
= null ;
  }

  
/**
   * 复写的主要部分,父类采用PORT模式,这里改为PASV模式
   * 
@param  s 传入的FTP命令
   * 
@return  连接到FTP服务器的Socket
   * 
@throws  IOException
   
*/
  
protected  Socket openDataConnection(String s)  throws  IOException{
    
if  (socket == null ){
      String s1
= " PASV " ;
      
if  (issueCommand(s1) == FTP_ERROR){
        MyFtpProtocolException ftpprotocolexception
= new  MyFtpProtocolException(
            
" PASV " );
        
throw  ftpprotocolexception;
      }
      String responseStr
= this .getResponseString();
      
int  location = responseStr.lastIndexOf( " , " );
      
int  n = Integer.parseInt(responseStr.substring(location + 1 ,
          responseStr.indexOf(
" ) " )));
      responseStr
= responseStr.substring( 0 ,location);
      location
= responseStr.lastIndexOf( " , " );
      
int  m = Integer.parseInt(responseStr.substring(location + 1 ,
          responseStr.length()));
      socket
= new  Socket(serverAddr,m * 256 + n);
    }
    
if  (issueCommand(s) == FTP_ERROR){
      MyFtpProtocolException ftpprotocolexception1
= new  MyFtpProtocolException(s);
      
throw  ftpprotocolexception1;
    }
    
return  socket;
  }

  
/**
   * 关闭与FTP服务器的连接
   * 
@throws  IOException
   
*/
  
public   void  closeServer()  throws  IOException{
    socket.close();
    socket
= null ;
    
super .closeServer();
  }

  
/**
   * 打开与FTP服务器的连接
   * 
@param  s FTP服务器地址
   * 
@param  i FTP服务器端口
   * 
@throws  IOException
   
*/
  
public   void  openServer(String s, int  i)  throws  IOException{
    
super .openServer(s,i);
    serverAddr
= s;
  }
}

/**
 * 自定义的FTP异常类
 
*/
class  MyFtpProtocolException
    
extends  IOException{
  MyFtpProtocolException(String s){
    
super (s);
  }
}
 
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包9

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包101

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    伊伊FTP定时触发器(EyiFtpTimer)

    伊伊FTP当时触发器,这是我上周刚刚弄完的一个小工具,她的主要功能,是通过FTP对文件进行上传和下载功能,她有两种计时方式,第一种到指定时间进行上传和下载操作,如指定到2009年10月1日12点12分执行,另一种计时...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包8

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包10

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    Http/FTP多线程断点续传下载组件

    点量Http、FTP多线程断点续传下载组件(下载DLL)的开发目的是让用户可以无需关心Http/FTP协议的具体细节,只需要几十行甚至几行代码,便可以实现一个功能完善的Http/FTP下载软件。点量Http/FTP下载组件(DLL)支持...

    java开源包2

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包7

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    Java资源包01

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1....

    Java-DownloadManager:Java Download Manager可以基于任何基础协议SFTP,HTTP,HTTPS,FTP下载多个文件

    该项目是Java中的Maven项目,编译器遵从性设置为Java 1.8或更高版本。 应用程序功能概述: 将数据从多个来源和协议(FTP,SFTP,HTTP,HTTPS)下载到本地磁盘。 在任何情况下,都不会将部分下载的数据保留在本地...

Global site tag (gtag.js) - Google Analytics