Java实现对文本文件MD5加密并ftp传送到远程主机目(3)

FileInputStream fis = null;
    InputStreamReader isr = null;
    BufferedReader br = null;
    FileOutputStream fos = null;
    PrintWriter pw = null;
    try {
        File file = new File(filepath);
        fis = new FileInputStream(file);
        isr = new InputStreamReader(fis);
        br = new BufferedReader(isr);
        StringBuffer buffer = new StringBuffer();
          for (int i = 0; (temp = br.readLine()) != null; i++) {
              buffer.append(temp);
              buffer = buffer.append(System.getProperty("line.separator"));
              }
              buffer.append(filein);

fos = new FileOutputStream(file);
              pw = new PrintWriter(fos);
              pw.write(buffer.toString().toCharArray());
              pw.flush();
              bool = true;
          } catch (Exception e) {
              e.printStackTrace();
          } finally {
              if (pw != null) {
                  pw.close();
              }
              if (fos != null) {
                  fos.close();
              }
              if (br != null) {
                  br.close();
              }
              if (isr != null) {
                  isr.close();
              }
              if (fis != null) {
                  fis.close();
              }
          }
          return bool;
      }

四、获取到文本文件和生成同名的文件名之后,紧接着就是获取相对应的ftp主机,用户名,密码以及路径信息了。我把这相对应的信息保存在数据库中。首先我们把获取到的业务类型放入一个HashMap中。
  parameterMap=new HashMap();
  parameterMap.put("audit_flag",OperationType);

然后我们配置ibaits的sqlid
  <!-- 根据业务选择路径,zhongfs于2017-12-05添加 -->
  <select resultClass="java.util.LinkedHashMap">
  select ftphost, proguser, progpass, remotedirectory from t_ftp_config s
  where 1 = 1
  <isNotEmpty prepend="AND" property="audit_flag">
  <![CDATA[   
  s.audit_flag = #audit_flag#
  ]]>
  </isNotEmpty>
  </select>

然后执行该sqlid的查询,把结果放入List 中
List<Map> resultType=EasyDataFatcherOnIbatis.queryBySqlKey("checkFtpType",false,parameterMap);

下面是根据该sqlid查询出来的List结果中,取出相关的信息
 String host = (String)resultType.get(0).get("FTPHOST");
 String user = (String)resultType.get(0).get("PROGUSER");
 String pass = (String)resultType.get(0).get("PROGPASS");
 String path = (String)resultType.get(0).get("REMOTEDIRECTORY");   
 //每月会自动生成一个月份的子目录
 String relpath=path+rpmonth+"/";

至此,便可以获取到相对应的ftp主机,用户名,密码以及路径信息了。

五、最后一步是实现上传,我是用的FTPClient来实现的。
 实现的操作都写在了FtpBBSUtil的FtpSento方法中,其中datapath表示需要传送文件的目录。
FtpBBSUtil.getFtpBBS().FtpSento(datapath, host, user, pass, relpath);

FtpBBSUtil的FtpSento方法如下所示:
  public void FtpSento(String localPath, String host, String user,
    String pass, String path) throws Exception {
    login(host, 21, user, pass);
    File parentFile = new File(localPath);
    File[] files = parentFile.listFiles();
    String outPath = path;
    for (File aFile : files) {
        if (aFile != null && aFile.getName() != null) {
            put(aFile, outPath, new String((aFile.getName())
            .getBytes("GB18030"), "ISO8859-1"));
        }
    }
    logout();
  }

总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3a19bf98f2872e488ebe40cb9e58ef75.html