我现在做一个从FTP下载的小程序,需要首先,我根据当前时间,去FTP找,有没有当前时间段内的文件,如果有,下载,并分别保存在两个地方,一个是d:/abc/XXXX.TXT,如果有N个文件需要下载,我就需要保存为d:/abc/XXXX1.TXT,d:/abc/XXXX2.TXT.....;一个地方是在D:/abc/FFFF.TXT,也就是要求将XXXX1,XXXX2里的内容,拼在一起,我的代码是这么写的
public void downIcsRealTime(String baseFile,String saveFile) throws Exception {
System.out.println("进入下载");
// FTP下载
TelnetInputStream fget = null;
RandomAccessFile getFile = null;
FtpClient fc = null;
try {
System.out.println(tDay);
int ch;
fc = new FtpClient();// ftp客户端对象
fc.openServer(FTPIP);// 连接ftp服务器
fc.login(USERNAME, PASSWORD);// 登录ftp服务器
fc.binary();// 使用二进制的方式下载 DataInputStream puts2 = new DataInputStream(fc.nameList(""));//
String s = " ";
String[] keepLocate = new String[] { baseFile,
saveFile+s}; // 本地保存
while ((s = puts2.readLine()) != null) {
if (s.indexOf(tDay) > -1) {
System.out.println("找到匹配文件");
for (int i = 0; i < 2; i++) {
fget = fc.get(s);// 读取ftp远程文件
DataInputStream puts = new DataInputStream(fget);//
File fi = new File(keepLocate[i]);// 新建本地文件
getFile = new RandomAccessFile(fi, "rw");// 以读写的方式打开本地文件
if (i == 1) {
getFile.seek(0); // 将指针放到文件最前段
}
while ((ch = puts.read()) >= 0) {// 循环读取远程文件的内容并写入本地文件中
getFile.write(ch);
}
}
} } System.out.println("下载结束");
} catch (Exception e) {
e.printStackTrace(System.out);
throw new Exception(e.getMessage());
} finally {
try {
fget.close();
} catch (Exception e) {
}
try {
getFile.close();
} catch (Exception e) {
}
try {
fc.closeServer();
} catch (Exception e) {
}
}
}
public void downIcsRealTime(String baseFile,String saveFile) throws Exception {
System.out.println("进入下载");
// FTP下载
TelnetInputStream fget = null;
RandomAccessFile getFile = null;
FtpClient fc = null;
try {
System.out.println(tDay);
int ch;
fc = new FtpClient();// ftp客户端对象
fc.openServer(FTPIP);// 连接ftp服务器
fc.login(USERNAME, PASSWORD);// 登录ftp服务器
fc.binary();// 使用二进制的方式下载 DataInputStream puts2 = new DataInputStream(fc.nameList(""));//
String s = " ";
String[] keepLocate = new String[] { baseFile,
saveFile+s}; // 本地保存
while ((s = puts2.readLine()) != null) {
if (s.indexOf(tDay) > -1) {
System.out.println("找到匹配文件");
for (int i = 0; i < 2; i++) {
fget = fc.get(s);// 读取ftp远程文件
DataInputStream puts = new DataInputStream(fget);//
File fi = new File(keepLocate[i]);// 新建本地文件
getFile = new RandomAccessFile(fi, "rw");// 以读写的方式打开本地文件
if (i == 1) {
getFile.seek(0); // 将指针放到文件最前段
}
while ((ch = puts.read()) >= 0) {// 循环读取远程文件的内容并写入本地文件中
getFile.write(ch);
}
}
} } System.out.println("下载结束");
} catch (Exception e) {
e.printStackTrace(System.out);
throw new Exception(e.getMessage());
} finally {
try {
fget.close();
} catch (Exception e) {
}
try {
getFile.close();
} catch (Exception e) {
}
try {
fc.closeServer();
} catch (Exception e) {
}
}
}
解决方案 »
- hibernate连接数据库和配置文件不符合
- commons.beanutils.ConversionException: No value specified
- 在初次使用EL时发现了一个问题。。requestScope传值无效
- web程序解析word 报错 在线等
- 不想用ejb的entity bean,轻量方案,hibernate,如何实现分布式,,讨论下,纯粹技术问题?100分
- ant 来生成hibernate
- jxl导出excel时如何根据内容修改某项颜色
- 求助!!!WEB页面上的树型菜单问题!
- 真的很郁闷,大家指点迷津!!!
- TimingAspect 使用报错,求指点!
- org.hibernate.hql.ast.QuerySyntaxException: TopicdetailId is not mapped.
- 请教一关于导入方面的东西
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:204)
at com.lkxxjk.task.TestFtp.downIcsRealTime(TestFtp.java:80)
at com.lkxxjk.task.TestFtp.run(TestFtp.java:115)
at com.lkxxjk.task.TestFtp.main(TestFtp.java:127)
java.lang.Exception: d:\abc\ (拒绝访问。)
at com.lkxxjk.task.TestFtp.downIcsRealTime(TestFtp.java:95)
at com.lkxxjk.task.TestFtp.run(TestFtp.java:115)
at com.lkxxjk.task.TestFtp.main(TestFtp.java:127)
String[] keepLocate = new String[] { baseFile,
saveFile+s}; // 本地保存
存放的是d:/abc/FFFF.TXT和d:/abc/XXX1.TXT这两个