当前位置: 技术问答>java相关
一个用Java写的简单的Ftp客户端程序!
来源: 互联网 发布时间:2015-01-03
本文导语: 前几天老是看见有人问用Java怎样实现FTP,趁今天晚上没事写了一个简单的实现。其实JDK包中就带有FTP的客户端的实现类,只不过有一些Bug。还好这个程序测试成功了,所以贴出来,希望大家指正,本来想改成GU...
前几天老是看见有人问用Java怎样实现FTP,趁今天晚上没事写了一个简单的实现。其实JDK包中就带有FTP的客户端的实现类,只不过有一些Bug。还好这个程序测试成功了,所以贴出来,希望大家指正,本来想改成GUI界面的可是没有很多时间,因为我马上要回学校了,所以很希望有人能把它改写成GUI的。
时间很紧,程序写的很简单,里面什么异常都没有处理,因为我只是想简单的实现一下!
import sun.net.ftp.* ;
import java.util.*;
import sun.net.*;
import java.io.*;
public class FtpTest
{
public static void main(String[] args)
{
try
{
byte[] bt;
TelnetInputStream getfile;
TelnetOutputStream putfile;
String str;
/**
* 和服务器建立连接
*/
FtpClient ftp = new FtpClient ("128.8.8.243");
str = ftp.getResponseString ();
System.out.println(str);
/**
* 登陆到Ftp服务器
*/
ftp.login ("user","password");
str = ftp.getResponseString ();
System.out.println(str);
/**
* 下面的代码是打印当前目录列表
*/
TelnetInputStream in = ftp.list();
str = ftp.getResponseString ();
System.out.println(str);
bt=new byte[in.available()];
in.read (bt);
str = new String (bt);
System.out.println(str);
/**
* 改变当前目录到Pub目录
*/
ftp.cd("pub");
str = ftp.getResponseString ();
System.out.println(str);
/**
* 下面的代码是打印Pub目录列表
*/
in = ftp.list();
str = ftp.getResponseString ();
System.out.println(str);
bt=new byte[in.available()];
in.read (bt);
str = new String (bt);
System.out.println(str);
str = ftp.getResponseString ();
System.out.println(str);
System.out.println("测试下载文件");
/**
* 下载文本文件的代码
*/
getfile = ftp.get("bookmark.htm");
str = ftp.getResponseString ();
System.out.println(str);
ftp.ascii();
str = ftp.getResponseString ();
System.out.println(str);
InputStreamReader xieli = new InputStreamReader (getfile);
BufferedReader b =new BufferedReader (xieli);
BufferedWriter writer = new BufferedWriter (new FileWriter (new File("bookmark.htm")));
while( true )
{
String s = b.readLine();
if( s == null ) break;
else
writer.write (s);
writer.flush ();
writer.newLine ();
}
writer.close ();
xieli.close ();
b.close ();
getfile.close ();
/**
* 下载二进制文件的代码
*/
ftp.binary ();
getfile = ftp.get("Tips.jar");
str = ftp.getResponseString ();
System.out.println(str);
str = ftp.getResponseString ();
System.out.println(str);
FileOutputStream output = new FileOutputStream (new File ("Tips.jar"));
while( true )
{
int i = getfile.read();
if( i == -1 ) break;
else
{
output.write ((byte)i);
output.flush();
}
}
getfile.close();
output.close ();
System.out.println("测试上载文件");
/**
* 上载文本文件的代码
*/
ftp.ascii ();
putfile = ftp.put("bk2.htm");
BufferedReader fis = new BufferedReader(new FileReader ("bk2.htm"));
BufferedWriter fos = new BufferedWriter (new OutputStreamWriter (putfile));
while(true)
{
String i = fis.readLine();
if (i == null) break;
else
{
fos.write(i);
fos.flush ();
fos.newLine ();
}
}
putfile.close ();
fis.close ();
fos.close ();
/**
* 上载二进制文件的代码
*/
ftp.binary();
putfile = ftp.put("Tips.jar");
FileInputStream fs = new FileInputStream ("Tips.jar");
while(true)
{
int i = fs.read();
if (i == -1) break;
else
{
putfile.write((byte)i);
putfile.flush ();
}
}
putfile.close ();
fs.close ();
}catch(Exception e){e.printStackTrace ();}
}
}
|
断肠人:you are so great
|
還有兩個open-source的ftp client
1)gnu的,可以到www.gnu.org去找
2)fooware的,可以到www.gjt.org去找
自己寫倒不必
但以上3個都沒有多線程
1)gnu的,可以到www.gnu.org去找
2)fooware的,可以到www.gjt.org去找
自己寫倒不必
但以上3個都沒有多線程
|
wxyxl不错不错。还有其他的Java FTP Client程序,只要愿意慢慢去找。:)
|
呵呵~ so great。
|
我在上传文件时老是出错,list没有问题,不知道是Sun的Bug还是我的程序有问题。
|
wxyxl果然名不虚传!
|
有两个小问题:
1、sun.net.*虽然有,可是为什么文档中没有提到呢?
2、这个包的帮助,哪里才有呢?sun上么?
1、sun.net.*虽然有,可是为什么文档中没有提到呢?
2、这个包的帮助,哪里才有呢?sun上么?