FTP上传下载,容易出现乱码,记得转换
代码如下 | 复制代码 |
packagecom.yinhai.team.action; importjava.io.File; importjava.io.FileInputStream; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importjava.io.OutputStream; importorg.apache.commons.net.ftp.FTPClient; importorg.apache.commons.net.ftp.FTPFile; importorg.apache.commons.net.ftp.FTPReply; publicclassFavFTPUtil { /** * 上传文件(可供Action/Controller层使用)未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param fileName 上传到FTP服务器后的文件名称 * @param inputStream 输入文件流 * @return */ publicstaticbooleanuploadFile(String hostname,intport, String username, String password, String pathname, String fileName, InputStream inputStream){ booleanflag =false; FTPClient ftpClient =newFTPClient(); ftpClient.setControlEncoding("UTF-8"); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //是否成功登录FTP服务器 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.makeDirectory(pathname); ftpClient.changeWorkingDirectory(pathname); ftpClient.storeFile(fileName, inputStream); inputStream.close(); ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.disconnect(); }catch(IOException e) { e.printStackTrace(); } } } returnflag; } /** * 上传文件(可对文件进行重命名)未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param filename 上传到FTP服务器后的文件名称 * @param originfilename 待上传文件的名称(绝对地址) * @return */ publicstaticbooleanuploadFileFromProduction(String hostname,intport, String username, String password, String pathname, String filename, String originfilename){ booleanflag =false; try{ InputStream inputStream =newFileInputStream(newFile(originfilename)); flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream); }catch(Exception e) { e.printStackTrace(); } returnflag; } /** * 上传文件(不可以进行文件的重命名操作) 未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param originfilename 待上传文件的名称(绝对地址) * @return */ publicstaticbooleanuploadFileFromProduction(String hostname,intport, String username, String password, String pathname, String originfilename){ booleanflag =false; try{ String fileName =newFile(originfilename).getName(); InputStream inputStream =newFileInputStream(newFile(originfilename)); flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream); }catch(Exception e) { e.printStackTrace(); } returnflag; } /** * 删除文件 未测试 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器保存目录 * @param filename 要删除的文件名称 * @return */ publicstaticbooleandeleteFile(String hostname,intport, String username, String password, String pathname, String filename){ booleanflag =false; FTPClient ftpClient =newFTPClient(); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //验证FTP服务器是否登录成功 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } //切换FTP目录 ftpClient.changeWorkingDirectory(pathname); ftpClient.dele(filename); ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.logout(); }catch(IOException e) { } } } returnflag; } /** * 下载文件 * @param hostname FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP登录帐号 * @param password FTP登录密码 * @param pathname FTP服务器文件目录 * @param filename 文件名称 * @param localpath 下载后的文件路径 * @return */ publicstaticbooleandownloadFile(String hostname,intport, String username, String password, String pathname, String filename, String localpath){ booleanflag =false; FTPClient ftpClient =newFTPClient(); try{ //连接FTP服务器 ftpClient.connect(hostname, port); //登录FTP服务器 ftpClient.login(username, password); //验证FTP服务器是否登录成功 intreplyCode = ftpClient.getReplyCode(); if(!FTPReply.isPositiveCompletion(replyCode)){ returnflag; } //切换FTP目录 booleanb = ftpClient.changeWorkingDirectory(newString(pathname.getBytes(),"ISO-8859-1")); System.out.println(b); FTPFile[] ftpFiles = ftpClient.listFiles(); for(FTPFile file : ftpFiles){ String fName =newString(file.getName().getBytes("iso-8859-1"),"UTF-8"); System.out.println(fName); if(filename.equalsIgnoreCase(fName)){ File localFile =newFile(localpath +"/"+ fName); OutputStream os =newFileOutputStream(localFile); ftpClient.retrieveFile(file.getName(), os); os.close(); } } ftpClient.logout(); flag =true; }catch(Exception e) { e.printStackTrace(); }finally{ if(ftpClient.isConnected()){ try{ ftpClient.logout(); }catch(IOException e) { } } } returnflag; } } |
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔