首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

急有关问题问的已经是第三遍了,请高手赐教!谢绝非成心解决有关问题的!多谢

2011-12-07 
急!!!!!!问题问的已经是第三遍了,请高手赐教!谢绝非成心解决问题的!谢谢!这个问题是往FTP上传文件,把本地

急!!!!!!问题问的已经是第三遍了,请高手赐教!谢绝非成心解决问题的!谢谢!
这个问题是往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
[解决办法]
解决就好~~

热点排行