java的ftp工具
ftp吧
全部回复
仅看楼主
level 1
_古井心 楼主
java源码,供参考,根据需求小改即可用
2016年10月14日 03点10分 1
level 1
_古井心 楼主
基于Apache的commons-net-3.3.jar
2016年10月14日 03点10分 2
直接上方法,封装到一个类里就可以了
2016年10月14日 03点10分
level 1
_古井心 楼主
/**
* 登出和断开连接的方法
*/
public void logoutAndDisconnect()
{
try
{
ftpClient.logout();
}
catch (IOException e)
{
DEBUGGER.error("Failed to logout", e);
}
finally
{
if (ftpClient.isConnected())
{
try
{
ftpClient.disconnect();
}
catch (IOException e)
{
DEBUGGER.error("Failed to disconnect", e);
}
}
}
}
2016年10月14日 03点10分 10
level 1
_古井心 楼主
/**
* 切换到对应目录,失败直接抛出异常
*
* @param remoteDir
* @throws FtpException
*/
public void changeDir(String remoteDir) throws FtpException
{
boolean res;
String msg = null;
try
{
res = ftpClient.changeWorkingDirectory(remoteDir);
if (!res)
{
msg = "FTP远程目录不存在 :" + remoteDir;
}
}
catch (IOException e)
{
DEBUGGER.error("Failed to changeDir", e);
res = false;
msg = "切换至对应目录异常";
}
if (!res)
{
throw new FtpException(msg);
}
}
2016年10月14日 04点10分 11
level 1
_古井心 楼主
/**
* ftp上传
*
* @param ftpClient
* @param uploadBean
* @return 上传成功的文件 返回文件的完整路径
*/
public List<String> uploadFile(FileUploadBean uploadBean,
List<InvLogFileupload> logList)
{
if (uploadBean == null)
{
return null;
}
List<File> fileList = uploadBean.getUploadFiles();
List<String> uploadFile = new ArrayList<String>(10);
if (fileList.isEmpty())
{
return null;
}
for (File file : fileList)
{
uploadSingleFile(uploadBean, logList, uploadFile, file);
}
return uploadFile;
}
2016年10月14日 04点10分 12
level 1
_古井心 楼主
/**
* 列出FTP当前目录的文件,同时进行文件的筛选过滤
*
* @param taskType
* @param workDir
* @param lff
* @return
* @throws IOException
*/
public List<String> listFtpDirectory(String taskType, String workDir,
List<String> lff) throws IOException
{
FTPFile[] fs = ftpClient.listFiles(workDir);
for (FTPFile ff : fs)
{
// 跳过当前目录和上级目录
if ((".".equals(ff.getName())) || ("..".equals(ff.getName())))
{
continue;
}
if (ff.isDirectory())
{
continue;
}
else
{
String fName = ff.getName();
if (FileUtil.isFileNameMatchTaskType(taskType, fName, workDir))
{
lff.add(workDir + "/" + ff.getName());
}
}
}
return lff;
}
2016年10月14日 04点10分 15
level 1
楼主,我在用java集成FTP上传文件时,上传小文件没有问题,但是上传80M左右的文件时,在ftp.storeFile(filename, input);出现假死,什么原因!
2016年10月17日 03点10分 17
这个我也没试过那么大的文件,但是80兆需要一点时间,程序暂时无响应还算正常吧,另外记得把连接超时的时间设置长一点,因为在传文件的时候控制连接可能断开。如果你的程序是单线程那么这个等待肯定更明显了,ftp这么大的文件最好使用多线程。
2016年10月18日 11点10分
1