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();
}
总结