FTP inputstream下载测试成功
This commit is contained in:
@@ -8,6 +8,7 @@ import com.fjy.spring.exception.UserException;
|
||||
import com.fjy.spring.properties.ServerProperties;
|
||||
import com.fjy.spring.service.FileService;
|
||||
import com.fjy.spring.service.LogService;
|
||||
import com.fjy.spring.untils.FtpOperationUtil;
|
||||
import com.fjy.spring.untils.FtpUtils;
|
||||
import com.fjy.spring.untils.LogUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -115,7 +116,7 @@ public class DownLoadController {
|
||||
bos.write(buff, 0, bytesRead);
|
||||
}
|
||||
//记录下载日志
|
||||
addVisitLog("下载文件"+tbFile.getColrealname()+" "+tbFile.getColfilename());
|
||||
addVisitLog("下载文件" + tbFile.getColrealname() + " " + tbFile.getColfilename());
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -144,7 +145,6 @@ public class DownLoadController {
|
||||
|
||||
@RequestMapping("/home/download/dodownloadftp")
|
||||
public String downloadFromFTP(@RequestParam Integer fileId, HttpServletRequest request, HttpServletResponse response) {
|
||||
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
try {
|
||||
request.setCharacterEncoding("UTF-8");
|
||||
@@ -157,31 +157,35 @@ public class DownLoadController {
|
||||
TbFile file = new TbFile();
|
||||
file.setColfileid(fileId);
|
||||
TbFile tbFile = fileService.findFileById(file);
|
||||
//TbFile tbFile = fileService.findFile(file);
|
||||
System.out.println("【file】"+tbFile.toString());
|
||||
|
||||
//System.out.println(tbFile.getColfilepath());
|
||||
|
||||
String ctxPath = tbFile.getColfilepath();
|
||||
String downLoadPath = ctxPath;
|
||||
//String downLoadPath = ctxPath + tbFile.getColfilename();
|
||||
//System.out.println(downLoadPath);
|
||||
|
||||
// FtpUtils.downFtpFile(ctxPath,tbFile.getColfilename(),)
|
||||
|
||||
try {
|
||||
FtpOperationUtil ftpUtil = new FtpOperationUtil();
|
||||
|
||||
long fileLength = new File(downLoadPath).length();
|
||||
response.setContentType("application/x-msdownload;");
|
||||
response.setHeader("Content-disposition", "attachment; filename=" + new String(tbFile.getColfilename().getBytes("utf-8"), "ISO8859-1"));
|
||||
response.setHeader("Content-Length", String.valueOf(fileLength));
|
||||
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
|
||||
|
||||
ftpUtil.connectServer("192.168.79.138", FTPClient.DEFAULT_PORT, "cms", "imis2", null);
|
||||
List<String> list = ftpUtil.getFileList("/");
|
||||
for (String str : list) {
|
||||
System.out.println(str);
|
||||
}
|
||||
|
||||
InputStream inputStream = ftpUtil.downFile(new String(tbFile.getColfilename().getBytes("UTF-8"), "iso-8859-1"));
|
||||
bis = new BufferedInputStream(inputStream);
|
||||
bos = new BufferedOutputStream(response.getOutputStream());
|
||||
byte[] buff = new byte[2048];
|
||||
int bytesRead;
|
||||
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
|
||||
bos.write(buff, 0, bytesRead);
|
||||
}
|
||||
//记录下载日志
|
||||
addVisitLog("下载文件"+tbFile.getColrealname()+" "+tbFile.getColfilename());
|
||||
// 记录下载日志
|
||||
// addVisitLog("下载文件" + tbFile.getColrealname() + " " + tbFile.getColfilename());
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
@@ -204,8 +208,8 @@ public class DownLoadController {
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -266,7 +270,7 @@ public class DownLoadController {
|
||||
}
|
||||
|
||||
//记录下载日志
|
||||
addVisitLog("下载压缩文件"+zipFile.getName());
|
||||
addVisitLog("下载压缩文件" + zipFile.getName());
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -369,7 +373,7 @@ public class DownLoadController {
|
||||
}
|
||||
}*/
|
||||
|
||||
public void downloadConfigFile(HttpServletResponse response,@RequestParam("fileName")String fileName) {
|
||||
public void downloadConfigFile(HttpServletResponse response, @RequestParam("fileName") String fileName) {
|
||||
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("multipart/form-data");
|
||||
@@ -377,7 +381,7 @@ public class DownLoadController {
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
try {
|
||||
int reply;
|
||||
ftpClient.connect("120.120.120.156",21);
|
||||
ftpClient.connect("120.120.120.156", 21);
|
||||
ftpClient.login("user1", "user1");
|
||||
reply = ftpClient.getReplyCode();
|
||||
if (!FTPReply.isPositiveCompletion(reply)) {
|
||||
@@ -386,10 +390,10 @@ public class DownLoadController {
|
||||
}
|
||||
ftpClient.changeWorkingDirectory("/GOS_CAS/BACKUP/cas_config_backup");//转移到FTP服务器目录
|
||||
FTPFile[] fs = ftpClient.listFiles();
|
||||
for(int i=0;i<fs.length;i++){
|
||||
if(fs[i].getName().equals(fileName)){
|
||||
for (int i = 0; i < fs.length; i++) {
|
||||
if (fs[i].getName().equals(fileName)) {
|
||||
String saveAsFileName = new String(fs[i].getName().getBytes("UTF-8"), "ISO8859-1");
|
||||
response.setHeader("Content-Disposition", "attachment;fileName="+saveAsFileName);
|
||||
response.setHeader("Content-Disposition", "attachment;fileName=" + saveAsFileName);
|
||||
OutputStream os = response.getOutputStream();
|
||||
ftpClient.retrieveFile(fs[i].getName(), os);
|
||||
os.flush();
|
||||
|
||||
@@ -5,7 +5,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
@Configuration
|
||||
|
||||
public class WebAppConfig implements WebMvcConfigurer {
|
||||
|
||||
/**
|
||||
|
||||
26
src/main/java/com/fjy/spring/properties/FtpProperties.java
Normal file
26
src/main/java/com/fjy/spring/properties/FtpProperties.java
Normal file
@@ -0,0 +1,26 @@
|
||||
package com.fjy.spring.properties;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author F嘉阳
|
||||
* @date 2018-05-07 19:52
|
||||
*/
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "ftp")
|
||||
@Data
|
||||
public class FtpProperties {
|
||||
//服务器地址名称
|
||||
private String server;
|
||||
//端口号
|
||||
private int port;
|
||||
//用户名称
|
||||
private String username;
|
||||
//密码
|
||||
private String password;
|
||||
//工作目录
|
||||
private String location;
|
||||
}
|
||||
376
src/main/java/com/fjy/spring/untils/FtpOperationUtil.java
Normal file
376
src/main/java/com/fjy/spring/untils/FtpOperationUtil.java
Normal file
@@ -0,0 +1,376 @@
|
||||
package com.fjy.spring.untils;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.SocketException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fjy.spring.properties.FtpProperties;
|
||||
import org.apache.commons.net.ftp.FTP;
|
||||
import org.apache.commons.net.ftp.FTPClient;
|
||||
import org.apache.commons.net.ftp.FTPFile;
|
||||
import org.apache.commons.net.ftp.FTPFileFilter;
|
||||
|
||||
/**
|
||||
* @author F嘉阳
|
||||
* @date 2018-05-07 19:56
|
||||
*/
|
||||
public class FtpOperationUtil {
|
||||
|
||||
private FTPClient ftpClient;
|
||||
public static final int BINARY_FILE_TYPE = FTP.BINARY_FILE_TYPE;
|
||||
public static final int ASCII_FILE_TYPE = FTP.ASCII_FILE_TYPE;
|
||||
|
||||
/**
|
||||
* 利用FtpProperties进行服务器连接
|
||||
*
|
||||
* @param FtpProperties 参数配置Bean类
|
||||
* @throws SocketException
|
||||
* @throws IOException
|
||||
*/
|
||||
public void connectServer(FtpProperties FtpProperties) throws SocketException,
|
||||
IOException {
|
||||
String server = FtpProperties.getServer();
|
||||
int port = FtpProperties.getPort();
|
||||
String user = FtpProperties.getUsername();
|
||||
String password = FtpProperties.getPassword();
|
||||
String location = FtpProperties.getLocation();
|
||||
connectServer(server, port, user, password, location);
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用详细信息进行服务器连接
|
||||
*
|
||||
* @param server:服务器地址名称
|
||||
* @param port:端口号
|
||||
* @param user:用户名
|
||||
* @param password:用户密码
|
||||
* @param path:转移到FTP服务器目录
|
||||
* @throws SocketException
|
||||
* @throws IOException
|
||||
*/
|
||||
public void connectServer(String server, int port, String user,
|
||||
String password, String path) throws SocketException, IOException {
|
||||
ftpClient = new FTPClient();
|
||||
ftpClient.connect(server, port);
|
||||
System.out.println("Connected to " + server + ".");
|
||||
//连接成功后的回应码
|
||||
System.out.println(ftpClient.getReplyCode());
|
||||
ftpClient.login(user, password);
|
||||
if (path != null && path.length() != 0) {
|
||||
ftpClient.changeWorkingDirectory(path);
|
||||
}
|
||||
ftpClient.setBufferSize(1024);//设置上传缓存大小
|
||||
ftpClient.setControlEncoding("UTF-8");//设置编码
|
||||
ftpClient.setFileType(BINARY_FILE_TYPE);//设置文件类型
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置传输文件类型:FTP.BINARY_FILE_TYPE | FTP.ASCII_FILE_TYPE
|
||||
* 二进制文件或文本文件
|
||||
*
|
||||
* @param fileType
|
||||
* @throws IOException
|
||||
*/
|
||||
public void setFileType(int fileType) throws IOException {
|
||||
ftpClient.setFileType(fileType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭连接
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
public void closeServer() throws IOException {
|
||||
if (ftpClient != null && ftpClient.isConnected()) {
|
||||
ftpClient.logout();//退出FTP服务器
|
||||
ftpClient.disconnect();//关闭FTP连接
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转移到FTP服务器工作目录
|
||||
*
|
||||
* @param path
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean changeDirectory(String path) throws IOException {
|
||||
return ftpClient.changeWorkingDirectory(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在服务器上创建目录
|
||||
*
|
||||
* @param pathName
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean createDirectory(String pathName) throws IOException {
|
||||
return ftpClient.makeDirectory(pathName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 在服务器上删除目录
|
||||
*
|
||||
* @param path
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean removeDirectory(String path) throws IOException {
|
||||
return ftpClient.removeDirectory(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除所有文件和目录
|
||||
*
|
||||
* @param path
|
||||
* @param isAll true:删除所有文件和目录
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean removeDirectory(String path, boolean isAll)
|
||||
throws IOException {
|
||||
|
||||
if (!isAll) {
|
||||
return removeDirectory(path);
|
||||
}
|
||||
|
||||
FTPFile[] ftpFileArr = ftpClient.listFiles(path);
|
||||
if (ftpFileArr == null || ftpFileArr.length == 0) {
|
||||
return removeDirectory(path);
|
||||
}
|
||||
//
|
||||
for (FTPFile ftpFile : ftpFileArr) {
|
||||
String name = ftpFile.getName();
|
||||
if (ftpFile.isDirectory()) {
|
||||
System.out.println("* [sD]Delete subPath [" + path + "/" + name + "]");
|
||||
removeDirectory(path + "/" + name, true);
|
||||
} else if (ftpFile.isFile()) {
|
||||
System.out.println("* [sF]Delete file [" + path + "/" + name + "]");
|
||||
deleteFile(path + "/" + name);
|
||||
} else if (ftpFile.isSymbolicLink()) {
|
||||
|
||||
} else if (ftpFile.isUnknown()) {
|
||||
|
||||
}
|
||||
}
|
||||
return ftpClient.removeDirectory(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查目录在服务器上是否存在 true:存在 false:不存在
|
||||
*
|
||||
* @param path
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean existDirectory(String path) throws IOException {
|
||||
boolean flag = false;
|
||||
FTPFile[] ftpFileArr = ftpClient.listFiles(path);
|
||||
for (FTPFile ftpFile : ftpFileArr) {
|
||||
if (ftpFile.isDirectory()
|
||||
&& ftpFile.getName().equalsIgnoreCase(path)) {
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
public boolean isExistsFile(String fileName) {
|
||||
try {
|
||||
FTPFile[] file = ftpClient.listFiles(fileName);
|
||||
return file.length > 0 ? true : false;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到文件列表,listFiles返回包含目录和文件,它返回的是一个FTPFile数组
|
||||
* listNames():只包含目录的字符串数组
|
||||
* String[] fileNameArr = ftpClient.listNames(path);
|
||||
*
|
||||
* @param path:服务器上的文件目录:/DF4
|
||||
*/
|
||||
public List<String> getFileList(String path) throws IOException {
|
||||
FTPFile[] ftpFiles = ftpClient.listFiles(path);
|
||||
//通过FTPFileFilter遍历只获得文件
|
||||
/* FTPFile[] ftpFiles2= ftpClient.listFiles(path,new FTPFileFilter() {
|
||||
@Override
|
||||
public boolean accept(FTPFile ftpFile) {
|
||||
return ftpFile.isFile();
|
||||
}
|
||||
}); */
|
||||
List<String> retList = new ArrayList<String>();
|
||||
if (ftpFiles == null || ftpFiles.length == 0) {
|
||||
return retList;
|
||||
}
|
||||
for (FTPFile ftpFile : ftpFiles) {
|
||||
if (ftpFile.isFile()) {
|
||||
retList.add(ftpFile.getName());
|
||||
}
|
||||
}
|
||||
return retList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除服务器上的文件
|
||||
*
|
||||
* @param pathName
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean deleteFile(String pathName) throws IOException {
|
||||
return ftpClient.deleteFile(pathName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件到ftp服务器
|
||||
* 在进行上传和下载文件的时候,设置文件的类型最好是:
|
||||
* ftpUtil.setFileType(FtpUtil.BINARY_FILE_TYPE)
|
||||
* localFilePath:本地文件路径和名称
|
||||
* remoteFileName:服务器文件名称
|
||||
*/
|
||||
public boolean uploadFile(String localFilePath, String remoteFileName)
|
||||
throws IOException {
|
||||
remoteFileName = new String(remoteFileName.getBytes("UTF-8"), "iso-8859-1");
|
||||
boolean flag = false;
|
||||
InputStream iStream = null;
|
||||
try {
|
||||
iStream = new FileInputStream(localFilePath);
|
||||
//我们可以使用BufferedInputStream进行封装
|
||||
//BufferedInputStream bis=new BufferedInputStream(iStream);
|
||||
//flag = ftpClient.storeFile(remoteFileName, bis);
|
||||
flag = ftpClient.storeFile(remoteFileName, iStream);
|
||||
} catch (IOException e) {
|
||||
flag = false;
|
||||
return flag;
|
||||
} finally {
|
||||
if (iStream != null) {
|
||||
iStream.close();
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件到ftp服务器,上传新的文件名称和原名称一样
|
||||
*
|
||||
* @param fileName:文件名称
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean uploadFile(String fileName) throws IOException {
|
||||
return uploadFile(fileName, fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传文件到ftp服务器
|
||||
*
|
||||
* @param iStream 输入流
|
||||
* @param newName 新文件名称
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean uploadFile(InputStream iStream, String newName)
|
||||
throws IOException {
|
||||
boolean flag = false;
|
||||
try {
|
||||
flag = ftpClient.storeFile(newName, iStream);
|
||||
} catch (IOException e) {
|
||||
flag = false;
|
||||
return flag;
|
||||
} finally {
|
||||
if (iStream != null) {
|
||||
iStream.close();
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从ftp服务器上下载文件到本地
|
||||
*
|
||||
* @param remoteFileName:ftp服务器上文件名称
|
||||
* @param localFileName:本地文件名称
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean download(String remoteFileName, String localFileName)
|
||||
throws IOException {
|
||||
remoteFileName = new String(remoteFileName.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
boolean flag = false;
|
||||
File outfile = new File(localFileName);
|
||||
OutputStream oStream = null;
|
||||
try {
|
||||
oStream = new FileOutputStream(outfile);
|
||||
//我们可以使用BufferedOutputStream进行封装
|
||||
//BufferedOutputStream bos=new BufferedOutputStream(oStream);
|
||||
//flag = ftpClient.retrieveFile(remoteFileName, bos);
|
||||
flag = ftpClient.retrieveFile(remoteFileName, oStream);
|
||||
} catch (IOException e) {
|
||||
flag = false;
|
||||
return flag;
|
||||
} finally {
|
||||
oStream.close();
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从ftp服务器上下载文件到本地
|
||||
*
|
||||
* @param sourceFileName:服务器资源文件名称
|
||||
* @return InputStream 输入流
|
||||
* @throws IOException
|
||||
*/
|
||||
public InputStream downFile(String sourceFileName) throws IOException {
|
||||
sourceFileName = sourceFileName;
|
||||
return ftpClient.retrieveFileStream(sourceFileName);
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
//testUpload();
|
||||
//testDownload();
|
||||
FtpOperationUtil ftpUtil = new FtpOperationUtil();
|
||||
ftpUtil.connectServer("192.168.79.138", FTPClient.DEFAULT_PORT, "cms", "imis2", null);
|
||||
//获得ftp服务器上目录名称为DF4下的所有文件名称
|
||||
List<String> list = ftpUtil.getFileList("/");
|
||||
for (String str : list) {
|
||||
System.out.println(str);
|
||||
}
|
||||
// 上传本地D盘文件aaa.txt到服务器,服务器上名称为bbb.txt
|
||||
//ftpUtil.uploadFile("F:\\JAVA Workspace\\Temp\\upload\\ERP实验1:销售预测与SOP.doc", "ERP实验1:销售预测与SOP.doc");
|
||||
// 从服务器上下载文件bbb.txt到本地d盘名称为ccc.txt
|
||||
//ftpUtil.download("ERP实验1:销售预测与SOP.doc", "F:\\JAVA Workspace\\Temp\\ERP实验1:销售预测与SOP.doc");
|
||||
|
||||
String name = "ERP实验1:销售预测与SOP.doc";
|
||||
InputStream inputStream = ftpUtil.downFile(new String(name.getBytes("UTF-8"), "iso-8859-1"));
|
||||
|
||||
String destination = "F:\\JAVA Workspace\\Temp\\ERP实验1:销售预测与SOP.doc";
|
||||
int index;
|
||||
byte[] bytes = new byte[1024];
|
||||
FileOutputStream downloadFile = new FileOutputStream(destination);
|
||||
while ((index = inputStream.read(bytes)) != -1) {
|
||||
downloadFile.write(bytes, 0, index);
|
||||
downloadFile.flush();
|
||||
}
|
||||
downloadFile.close();
|
||||
inputStream.close();
|
||||
|
||||
// 删除ftp服务器上文件:bbb.txt
|
||||
//ftpUtil.deleteFile("bbb.txt");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import org.apache.commons.net.ftp.FTPClient;
|
||||
import org.apache.commons.net.ftp.FTPFile;
|
||||
import org.apache.commons.net.ftp.FTPReply;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
@@ -12,8 +13,8 @@ import java.io.*;
|
||||
* @date 2018-05-06 11:35
|
||||
*/
|
||||
public class FtpUtils {
|
||||
private static final String FTP_URL = "176.122.138.235";
|
||||
// private static final String FTP_URL = "192.168.79.138";
|
||||
// private static final String FTP_URL = "176.122.138.235";
|
||||
private static final String FTP_URL = "192.168.79.138";
|
||||
private static final int PORT = 21;
|
||||
private static final String USER_NAME = "cms";
|
||||
private static final String PASSWORD = "imis2";
|
||||
@@ -37,16 +38,13 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean upload(String directory, String srcFileName, String destName) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
destName = new String(destName.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
destName = new String(destName.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
FileInputStream fis = null;
|
||||
boolean result = false;
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
File srcFile = new File(srcFileName);
|
||||
fis = new FileInputStream(srcFile);
|
||||
|
||||
@@ -85,12 +83,9 @@ public class FtpUtils {
|
||||
* @param downloadName 下载后存储的文件名全路径
|
||||
*/
|
||||
public static boolean download(String directory, String destFileName, String downloadName) throws IOException {
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
boolean result = false;
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.setBufferSize(1024);
|
||||
|
||||
// 设置文件类型(二进制)
|
||||
@@ -119,11 +114,11 @@ public class FtpUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* @author xh 测试成功 可以下载中文文件 ftp默认的编码为gbk
|
||||
* @param remotePath
|
||||
* @param fileName
|
||||
* @param localPath
|
||||
* @return
|
||||
* @author xh 测试成功 可以下载中文文件 ftp默认的编码为gbk
|
||||
*/
|
||||
public static boolean downFtpFile(String remotePath, String fileName,
|
||||
String localPath) {
|
||||
@@ -148,7 +143,7 @@ public class FtpUtils {
|
||||
for (FTPFile ff : fs) {
|
||||
String fname = new String(ff.getName().getBytes("iso-8859-1"), "UTF-8");
|
||||
if (fname.equals(fileName)) {
|
||||
File localFile = new File(localPath+fname);
|
||||
File localFile = new File(localPath + fname);
|
||||
OutputStream is = new FileOutputStream(localFile);
|
||||
ftp.retrieveFile(ff.getName(), is);
|
||||
is.close();
|
||||
@@ -171,15 +166,16 @@ public class FtpUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* @author xh 测试成功 可以下载中文文件 ftp默认的编码为gbk
|
||||
* @param remotePath
|
||||
* @param fileName
|
||||
* @param localPath
|
||||
* @return
|
||||
* @author xh 测试成功 可以下载中文文件 ftp默认的编码为gbk
|
||||
*/
|
||||
public static boolean downFtpFileByStream(String remotePath, String fileName,
|
||||
String localPath) {
|
||||
public static OutputStream downFtpFileByStream(String fileName) {
|
||||
|
||||
String remotePath = "/www/ftp/cms/";
|
||||
boolean success = false;
|
||||
OutputStream is = null;
|
||||
|
||||
FTPClient ftp = new FTPClient();
|
||||
try {
|
||||
int reply;
|
||||
@@ -190,7 +186,7 @@ public class FtpUtils {
|
||||
reply = ftp.getReplyCode();
|
||||
if (!FTPReply.isPositiveCompletion(reply)) {
|
||||
ftp.disconnect();
|
||||
return success;
|
||||
return null;
|
||||
}
|
||||
// 转移到FTP服务器目录
|
||||
ftp.changeWorkingDirectory(remotePath);
|
||||
@@ -200,11 +196,10 @@ public class FtpUtils {
|
||||
for (FTPFile ff : fs) {
|
||||
String fname = new String(ff.getName().getBytes("iso-8859-1"), "UTF-8");
|
||||
if (fname.equals(fileName)) {
|
||||
File localFile = new File(localPath+fname);
|
||||
OutputStream is = new FileOutputStream(localFile);
|
||||
File localFile = new File(fname);
|
||||
is = new FileOutputStream(localFile);
|
||||
ftp.retrieveFile(ff.getName(), is);
|
||||
is.close();
|
||||
break;
|
||||
return is;
|
||||
}
|
||||
}
|
||||
ftp.logout();
|
||||
@@ -212,6 +207,12 @@ public class FtpUtils {
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
assert is != null;
|
||||
is.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (ftp.isConnected()) {
|
||||
try {
|
||||
ftp.disconnect();
|
||||
@@ -219,7 +220,7 @@ public class FtpUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
return success;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -230,19 +231,16 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean rename(String directory, String oldFileName, String newFileName) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
oldFileName = new String(oldFileName.getBytes("UTF-8"),"iso-8859-1");
|
||||
newFileName = new String(newFileName.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
oldFileName = new String(oldFileName.getBytes("UTF-8"), "iso-8859-1");
|
||||
newFileName = new String(newFileName.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
/**
|
||||
* 判断远程文件是否重命名成功,如果成功返回true,否则返回false
|
||||
*/
|
||||
boolean result = false;
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
//重命名远程文件
|
||||
result = ftpClient.rename(oldFileName, newFileName);
|
||||
@@ -267,18 +265,15 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean remove(String directory, String fileName) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
/**
|
||||
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
|
||||
*/
|
||||
boolean result = false;
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
//删除远程文件
|
||||
result = ftpClient.deleteFile(fileName);
|
||||
@@ -303,18 +298,15 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean makeDirecotory(String directory, String newDirectory) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
newDirectory = new String(newDirectory.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
newDirectory = new String(newDirectory.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
/**
|
||||
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
|
||||
*/
|
||||
boolean result = false;
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
result = ftpClient.makeDirectory(newDirectory);//创建新目录
|
||||
return result;
|
||||
@@ -339,17 +331,14 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean renameDirecotory(String directory, String oldDirectory, String newDirectory) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
oldDirectory = new String(oldDirectory.getBytes("UTF-8"),"iso-8859-1");
|
||||
newDirectory = new String(newDirectory.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
oldDirectory = new String(oldDirectory.getBytes("UTF-8"), "iso-8859-1");
|
||||
newDirectory = new String(newDirectory.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
// 判断远程文件是否移除成功,如果成功返回true,否则返回false
|
||||
boolean result = false;
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
// 重命名目录
|
||||
result = ftpClient.rename(oldDirectory, newDirectory);
|
||||
@@ -374,18 +363,15 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static boolean removeDirecotory(String directory, String deldirectory) throws IOException {
|
||||
directory = new String(directory.getBytes("UTF-8"),"iso-8859-1");
|
||||
deldirectory = new String(deldirectory.getBytes("UTF-8"),"iso-8859-1");
|
||||
directory = new String(directory.getBytes("UTF-8"), "iso-8859-1");
|
||||
deldirectory = new String(deldirectory.getBytes("UTF-8"), "iso-8859-1");
|
||||
|
||||
/**
|
||||
* 判断远程文件是否移除成功,如果成功返回true,否则返回false
|
||||
*/
|
||||
boolean result = false;
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
result = ftpClient.removeDirectory(deldirectory);//删除目录
|
||||
return result;
|
||||
@@ -408,17 +394,12 @@ public class FtpUtils {
|
||||
* @throws IOException
|
||||
*/
|
||||
public static String[] list(String directory) throws IOException {
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
FTPClient ftpClient = makeConnectionFactory();
|
||||
try {
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.setControlEncoding(LOCAL_CHARSET);
|
||||
ftpClient.changeWorkingDirectory(directory);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
//删除目录
|
||||
String[] list = ftpClient.listNames();
|
||||
return list;
|
||||
return ftpClient.listNames();
|
||||
} catch (NumberFormatException e) {
|
||||
throw e;
|
||||
} catch (IOException e) {
|
||||
@@ -431,4 +412,19 @@ public class FtpUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建FTP连接的工厂方法
|
||||
*
|
||||
* @return
|
||||
* @throws IOException
|
||||
*/
|
||||
private static FTPClient makeConnectionFactory() throws IOException {
|
||||
FTPClient ftpClient = new FTPClient();
|
||||
ftpClient.connect(FTP_URL, PORT);
|
||||
ftpClient.login(USER_NAME, PASSWORD);
|
||||
ftpClient.enterLocalPassiveMode();
|
||||
ftpClient.setControlEncoding(LOCAL_CHARSET);
|
||||
return ftpClient;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user