怎样用Java实现ftp上传(100分)

  • 主题发起人 主题发起人 Warm
  • 开始时间 开始时间
W

Warm

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大虾提供一段用ftp协议上传文件的详细资料。
我是用下列步骤来完成的,不知问号处怎样实现。
Socket sktTest=new Socket("192.181.1.30",21);
//建立与ftp服务器的连接
DataOutputStream dataoutTest=new
DataOutputStream(sktTest.getOutputStream());
DataInputStream datainTest=new
DataInputStream(sktTest.getInputStream());
GetReply(datainTest);
//取得服务器端返回信息的过程
dataoutTest.writeBytes("USER ftpuser"+"/r/n");
GetReply(datainTest);
dataoutTest.writeBytes("PASS ftpuser"+"/r/n");
GetReply(datainTest);
?????????????????????????????????????????? //这里不知怎样实现
GetReply(datainTest);
dataoutTest.writeBytes("QUIT/r/n");
GetReply(datainTest);
sktTest.close();
另外对于服务器路径和本地路径又该怎样控制?
 
sun已经提供了sun.net.ftp.*包,已经实现了FTP协议。
你没有必要自己实现,直接用sun.net.ftp.*就可以了。
 
我在ftp包里没找到上传的函数,只有下载的,所以只好自己实现了。
而且做法也是依照下载的实现方法来的。
 
>>我在ftp包里没找到上传的函数,只有下载的
非也,sun.net.ftp.FtpClient类有一个方法:
public TelnetOutputStream put(String filename) throws IOException
就是用来上传的,试一下,很简单的。
 
大虾,没找到啊,用的是什么开发环境?
 
>>没找到啊,用的是什么开发环境?
它是JDK自带的包,只不过没有提供文档。开发环境:JDK+JEDPlus.
看看下面的代码:
public boolean ftpTransfer(String lfile, String serverfile){
System.out.println("Transferring file "+ lfile +" to "+serverfile);
try{
InputStream is = new FileInputStream(lfile);
BufferedInputStream bis = new BufferedInputStream(is);
OutputStream os = client.put(serverfile);
BufferedOutputStream bos = new BufferedOutputStream(os);
byte[] buffer = new byte[1024];
int readCount;
while( (readCount = bis.read(buffer)) > 0) {
bos.write(buffer, 0, readCount);
}
bos.close();
System.out.println("File "+ serverfile +" is transferred ");
return true;
}catch(IOException ie){
System.out.println("File "+ serverfile +" cann't be ftped /n reason "+ie);
return false;
}
}
可以搞定了吧。
 
Java,俺不会,你能教我吗?
--------胖子
 
eguy,我在试程序时,
用到client.put(..)时就报错了,client的定义是
FtpClient client=new FtpClient("192.123.10.1")
请问是不是路径在设置上有什么规律?
比方:
lfile我用"d://test.txt"代替
serverfile我用"test.txt"代替。这样会出现什么错误呢?
 
成功了,少了一个Login,
thank you!eguy
 
接受答案了.
 
后退
顶部