boolean commandRETR()
	    {
	        requestfile = param;
	        File f =  new File(requestfile);
	          if(!f.exists())
	        {
	              f = new File(addTail(dir)+param);
	            if(!f.exists())
	            {
	                   reply = "550 文件不存在";
	                   return  false;
	            }
	            requestfile = addTail(dir)+param;
	        }
	  
	          if(isrest)
	        {
	     
	        }
	        else
	        {
	             if(type==FtpState.FTYPE_IMAGE)                //bin
	            {
	                try
	                {
	                    ctrlOutput.println("150 文件状态正常,以二进治方式打开文件:  "+ requestfile);
	                    dataSocket = new Socket(remoteHost,remotePort,InetAddress.getLocalHost(),20);
	                    BufferedInputStream  fin = new BufferedInputStream(new FileInputStream(requestfile));
	                      PrintStream dataOutput = new PrintStream(dataSocket.getOutputStream(),true);
	                    byte[] buf = new byte[1024];         //目标缓冲区
	                    int l = 0;
	                    while((l=fin.read(buf,0,1024))!=-1)    //缓冲区未读满
	                    {
	                          dataOutput.write(buf,0,l);        //写入套接字
	                    }
	                     fin.close();
	                     dataOutput.close();
	                     dataSocket.close();
	                     reply ="226 传输数据连接结束";

	                }
	                catch(Exception e)
	                {
	                    e.printStackTrace();
	                    reply = "451 请求失败: 传输出故障";
	                    return false;
	                }

	            }
	            if(type==FtpState.FTYPE_ASCII)//ascII
	            {
	                  try
	                {
	                    ctrlOutput.println("150 Opening ASCII mode data connection for "+ requestfile);
	                    dataSocket = new Socket(remoteHost,remotePort,InetAddress.getLocalHost(),20);
	                    BufferedReader  fin = new BufferedReader(new FileReader(requestfile));
	                      PrintWriter dataOutput = new PrintWriter(dataSocket.getOutputStream(),true);
	                    String s;
	                    while((s=fin.readLine())!=null)
	                    {
	                           dataOutput.println(s);    ///???
	                    }
	                     fin.close();
	                     dataOutput.close();
	                     dataSocket.close();
	                     reply ="226 传输数据连接结束";
	                }
	                catch(Exception e)
	                {
	                    e.printStackTrace();
	                    reply = "451 请求失败: 传输出故障";
	                    return false;
	                }
	            }
	        }
	          return false;

	    }