0
回答
ftp下载文件
开发十年,就只剩下这套Java开发体系了   

java通过ftp上传文件在通过ftp下载的时候找不到对应的文件是为什么?

/**
     * Description: 向FTP服务器上传文件
     * 
     * @param url
     *            FTP服务器hostname
     * @param port
     *            FTP服务器端口
     * @param username
     *            FTP登录账号
     * @param password
     *            FTP登录密码
     * @param ftpPath
     *            FTP服务器保存目录
     * @param filename
     *            上传到FTP服务器上的文件名
     */
    public static boolean upload(String url, int port, String username,
            String password, String ftpPath, String filename, String localPath) {
        FTPClient ftpClient = new FTPClient();
        InputStream fis = null;
        boolean flag = false;
        try {
            ftpClient.connect(url, port);
            ftpClient.login(username, password);

            ftpClient.enterLocalPassiveMode();

            File srcFile = new File(localPath);

            fis = new FileInputStream(srcFile);

            // 设置文件类型(二进制�?
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
            ftpClient.changeWorkingDirectory(ftpPath);
            // String name = srcFile.getName();
            flag = ftpClient.storeFile(filename, fis);
        } catch (IOException e) {
            e.printStackTrace();
            flag = false;
            throw new RuntimeException("FTP客户端出错!", e);
        } finally {
            IOUtils.closeQuietly(fis);
            try {
                ftpClient.disconnect();
            } catch (IOException e) {
                e.printStackTrace();
                // throw new RuntimeException("关闭FTP连接发生异常", e);
            }
        }
        return flag;
    }

 

/**
       * 下载文件
       * @param hostname FTP服务器地址
       * @param port  FTP服务器端口号
       * @param username  FTP登录帐号
       * @param password  FTP登录密码
       * @param pathname  FTP服务器文件目录
       * @param filename  文件名称
       * @param localpath 下载后的文件路径
       * @return
       */
      public static boolean downloadFile(String hostname, int port, String username, String password, String pathname, String filename, String localpath){
        boolean flag = false;
        FTPClient ftpClient = new FTPClient();
        try {
          //连接FTP服务器
          ftpClient.connect(hostname, port);
          //登录FTP服务器
          ftpClient.login(username, password);
          //验证FTP服务器是否登录成功
          int replyCode = ftpClient.getReplyCode();
          if(!FTPReply.isPositiveCompletion(replyCode)){
            return flag;
          }
          //切换FTP目录
          ftpClient.enterLocalPassiveMode();
          ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
          ftpClient.changeWorkingDirectory(pathname);
          FTPFile[] ftpFiles = ftpClient.listFiles();
          for(FTPFile file : ftpFiles){
            if(filename.equalsIgnoreCase(file.getName())){
              File localFile = new File(localpath + "/" + file.getName());
              OutputStream os = new FileOutputStream(localFile);
              ftpClient.retrieveFile(file.getName(), os);
              os.close();
            }
          }
          ftpClient.logout();
          flag = true;
        } catch (Exception e) {
          e.printStackTrace();
        } finally{
          if(ftpClient.isConnected()){
            try {
              ftpClient.logout();
            } catch (IOException e) {
              
            }
          }
        }
        return flag;
      }

<无标签>
举报
顶部