读书人

急有关问题问的已经是第三遍了请高手

发布时间: 2011-12-07 22:35:48 作者: rapoo

急!!!!!!问题问的已经是第三遍了,请高手赐教!谢绝非成心解决问题的!谢谢!
这个问题是往FTP上传文件,把本地机上的一个文件夹的内容按照文件夹的目录结构传到FTP上,问题是:一个上判断是否为文件夹的if(filelist[i].isDirectory()==true)和else,else中的内容是往FTP上写文件,
出现以下报错;但是要是把if或else其中的一个屏蔽掉一个,完全可以执行其中的内容!下面源程序只是实现一层文件夹的上传,多层的与这个一样的错误!有朋友回答过这个问题,但是没答出解决方法,希望有朋友帮帮我,真的很急,谢谢!
java.io.FileNotFoundException: CWD /2: 550 /2/???¨??????: Failed to create.

at sun.net.ftp.FtpClient.readReply(Unknown Source)
at sun.net.ftp.FtpClient.issueCommand(Unknown Source)
at sun.net.ftp.FtpClient.issueCommandCheck(Unknown Source)
at sun.net.ftp.FtpClient.cd(Unknown Source)
at shareit.ftp.FtpConnection.run(FTPtxt.java:106)
sun.net.ftp.FtpProtocolException: PORT :500 'EPRT ': command not understood.

at sun.net.ftp.FtpClient.openDataConnection(Unknown Source)
at sun.net.ftp.FtpClient.put(Unknown Source)
at shareit.ftp.FtpConnection.run(FTPtxt.java:110)
sun.net.ftp.FtpProtocolException: PORT :500 'EPRT ': command not understood.

at sun.net.ftp.FtpClient.openDataConnection(Unknown Source)
at sun.net.ftp.FtpClient.put(Unknown Source)
at shareit.ftp.FtpConnection.run(FTPtxt.java:110)
sun.net.ftp.FtpProtocolException: PORT :500 'EPRT ': command not understood.

at sun.net.ftp.FtpClient.openDataConnection(Unknown Source)
at sun.net.ftp.FtpClient.put(Unknown Source)
at shareit.ftp.FtpConnection.run(FTPtxt.java:110)
源程序如下:
package shareit.ftp;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

class Node
{
File[] fle;
}
class FtpConnection extends Thread
{ //private String user;
//private String password;

private FtpClient ftpclient;
FtpConnection()
{
try{ftpclient=new FtpClient( "192.168.0.66 ",21);

Login();
}
catch(Exception e){}
}
public void Login()
{
try {

ftpclient.login( "winterzd ", "2251780 ");



} catch (IOException e) {
e.printStackTrace();
}
}
public void Logout()
{

ftpclient.sendServer( "QUIT\r\n ");
int reply = 0;
try {
reply = ftpclient.readServerResponse();
} catch (IOException e) {

e.printStackTrace();
}
System.out.println(reply);
}
public void run()
{
try {


//readirt();
//*********************************************
File file=new File( "D:\\2 ");

File[] filelist=file.listFiles();

int count=filelist.length;
//System.out.println(count);


int i=count-1;
while(i> =0)
{
if(filelist[i].isDirectory()==true)
{ try{

String path=filelist[i].getAbsolutePath();
String[] pathsplit=path.split( "\\\\ ");
int j=pathsplit.length-1;

int m=1;
String pathafter= "/ ";
while(m <=j)
{
if(m <j)pathafter=pathafter.concat(pathsplit[m])+ "/ ";
else pathafter=pathafter.concat(pathsplit[m]);

m++;

}
//System.out.println(pathafter);
ftpclient.sendServer( "XMKD " + pathafter + "\r\n ");


}
catch (Exception e) {e.printStackTrace();}
}
else {
try{
//ftpclient.cd( "/2 ");
String path=filelist[i].getParent();
String[] pathsplit=path.split( "\\\\ ");
int j=pathsplit.length-1;
int m=1;
String pathafter= "/ ";
while(m <=j)
{
if(m <j)pathafter=pathafter.concat(pathsplit[m])+ "/ ";
else pathafter=pathafter.concat(pathsplit[m]);
m++;
}
//System.out.println(pathafter);
ftpclient.cd(pathafter);
String name=filelist[i].getName();
ftpclient.binary();


FileInputStream input=new FileInputStream(filelist[i]);
TelnetOutputStream output=ftpclient.put(name);
int bytesRead;
while((bytesRead=input.read())!=-1)
output.write(bytesRead);

input.close();
output.close();
}
catch (Exception e) {e.printStackTrace();}

}
i--;
}
//**********************************************
}
catch(Exception ee){}
Logout();
}


}

public class FTPtxt {
public static void main(String args[])
{

FtpConnection ftp=new FtpConnection();
ftp.start();

}
}




[解决办法]
太长了,看不下去
给你顶
[解决办法]
不懂 帮你顶一下吧
[解决办法]
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

应该没多少人用过
[解决办法]
在ftpclient.sendServer( "XMKD " + pathafter + "\r\n ");之后要加上这句:
ftpclient.readServerResponse();
[解决办法]
不懂,帮顶
[解决办法]
太多了,顶
[解决办法]
好长好长,呵呵。顶上去
[解决办法]
自己调试吧。
[解决办法]
帮着顶了
[解决办法]
我上面说的是最主要的一个问题,就是服务器一直在那等你readServerResponse
还有一个问题:“2”这个文件夹在服务器上不一定存在,应该先请求创建这个文件夹
[解决办法]
问题大概时候这样
File f....

if(f.exist()==false)
continue;
else if(f.isFile())
uploadFile(f);
else if(f.isDirectory())
...

要判断文件不存在的情况
而看你的异常,就是文件找不到 java.io.FileNotFoundException
[解决办法]
解决就好~~

读书人网 >J2SE开发

热点推荐