求解:向FTP服务器上传多个文件时出错!!!!!!!!!!

爱吃苹果的琉克 2011-06-13 09:35:53
如题,当我像FTP服务器上传1个文件时,可以成功,...
贴上代码。。。清楚些....
public int SynNewsCateAnnex(List urlsList,Map ftpInfoMap) {
int result=1;
FTPClient ftp = new FTPClient();
try {
String localPath = "/newsCatetoryIcon";

String ip = ftpInfoMap.get("ip").toString();
int port = Integer.valueOf(ftpInfoMap.get("port").toString());
String userName = ftpInfoMap.get("userName").toString();
String password = ftpInfoMap.get("password").toString();
ftp.connect(ip, port);
ftp.login(userName, password);

if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
System.out.println("未连接到FTP,用户名或密码错误。");
ftp.disconnect();
result=0;
} else {
System.out.println("FTP连接成功。");
}

for(int i=0;i<urlsList.size();i++){
File file = new File(urlsList.get(i).toString());
uploadAnnex(ftp, file, localPath);
}

ftp.logout();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result=0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result=0;
} finally {
try {
if(ftp.isConnected()){
ftp.disconnect();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
result=0;
}

}
return result;
}
private void uploadAnnex(FTPClient ftp, File file, String localPath) throws IOException {
FileInputStream fis = null;
OutputStream os = null;
ftp.makeDirectory(localPath); // 设置上传目录
ftp.changeWorkingDirectory(localPath); // 设置把上传的文件放到指定的目录

ftp.setControlEncoding("utf-8");
// 设置文件类型(二进制)
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

ftp.deleteFile(file.getName()); // 如果文件在该目录下存在,则删除

fis = new FileInputStream(file);
System.out.println("======"+file.getName());
os = ftp.appendFileStream(file.getName());
byte[] bytes = new byte[(int) file.length()];
int len = 0;
while ((len = fis.read(bytes)) != -1) {
os.write(bytes, 0, len);
}

os.flush();

IOUtils.closeQuietly(fis);
os.close();
}
...全文
260 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果每传一个文件就 连接一次FTP服务器,是可以的....
  • 打赏
  • 举报
回复
流程就是 : 打开FTP服务器---用户登录----传文件(多个)---用户注销---关闭连接
  • 打赏
  • 举报
回复
循环第一次的时候 os = ftp.appendFileStream(file.getName());
这个os是有对象的,第二次的到这里的时候os=null

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧