| pom.xml | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/information/controller/FtpUploadFile.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/information/controller/FtpUtil.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/information/controller/InformationController.java | ●●●●● patch | view | raw | blame | history | |
| src/main/java/org/springblade/modules/information/controller/OutJson.java | ●●●●● patch | view | raw | blame | history |
pom.xml
@@ -206,7 +206,16 @@ <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> </dependencies> <build> src/main/java/org/springblade/modules/information/controller/FtpUploadFile.java
New file @@ -0,0 +1,134 @@ package org.springblade.modules.information.controller; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; public class FtpUploadFile { private final static Log logger = LogFactory.getLog(FtpUploadFile.class); /** * 获取ftpClient对象 * @param ftpHost FTP服务器地址 * @param ftpUserName 登录FTP服务器用户名 * @param ftpPassword 登录FTP服务器密码 * @param ftpPort FTP服务器端口 * @return */ public static FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort) { FTPClient ftpClient = new FTPClient(); //ftpClient.setControlEncoding("GBK"); // 传输的字符编码(防止乱码),自带的编码是ISO-8859-1,一般不会出现乱码 //超时时间(防止僵死) //ftpClient.setDataTimeout(1000*60); //ftpClient.setDefaultTimeout(1000*60); //工作流的大小 //ftpClient.setBufferSize(1024*4); //主被动模式(应对FTP服务器的相关安全设置) ftpClient.enterLocalPassiveMode(); //ftpClient.enterLocalActiveMode(); try { ftpClient.connect(ftpHost, ftpPort); // 连接FTP服务器 if(ftpClient.isConnected()) { //使用用户名和密码登录 if(ftpClient.login(ftpUserName, ftpPassword)) { //判断FTP连接是否可用,源码中是通过判断ReplyCode值(200=< reply <300) if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { logger.info("FTP连接成功。"); System.out.println("FTP登录成功,ftpHost: ftp:/"+ftpClient.getRemoteAddress()); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); } }else { logger.info("未连接到FTP,用户名或密码错误。"); ftpClient.disconnect(); } } } catch (SocketException e) { e.printStackTrace(); logger.info("FTP的IP地址可能错误,请正确配置。"); } catch (IOException e) { e.printStackTrace(); logger.info("FTP的端口错误,请正确配置。"); } return ftpClient; } /** * 上传文件 * @param ftpHost FTP服务器地址 * @param ftpUserName 登录FTP服务器用户名 * @param ftpPassword 登录FTP服务器密码 * @param ftpPort FTP服务器端口 * @param ftpPath 上传到FTP服务器的指定目录 * @param filename 上传的文件名 * @param input 文件输入流 * @return 成功返回true,否则返回false */ public static boolean uploadFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String filename, InputStream input) { boolean result = false; FTPClient ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); try { int reply; reply = ftpClient.getReplyCode(); //用户名密码错误时,值是530 if (!FTPReply.isPositiveCompletion(reply)) { //判断是否成功登录 //ftpClient.disconnect(); //用户名密码错误时报空指针,是因为在用户名密码不正确时,在上面已执行disconnect操作 return result; } ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.makeDirectory(ftpPath); //目录不存在则创建目录 ftpClient.changeWorkingDirectory(ftpPath); //切换到要上传的目录 //编码文件名,支持中文文件名 filename = new String(filename.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING); //上传文件 if (!ftpClient.storeFile(filename, input)) { System.out.println("文件已存在"); //应该是判断文件是否已存在服务器上 return result; } input.close(); ftpClient.logout(); result = true; } catch (IOException e) { e.printStackTrace(); } catch (NullPointerException e){ e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException e) {} } } return result; } public static void main(String[] args) { String ftpHost = "192.168.0.109"; String ftpUserName = "anonymous"; String ftpPassword = ""; int ftpPort = 21; //String ftpPath = ""; //目录名, ""表示根目录 String ftpPath = ""; //目录名最好是英文,中文目录暂时还未成功上传 String fileName = "fz.py"; //要上传的文件名 //上传文件 try{ FileInputStream in=new FileInputStream(new File("D:\\" + fileName)); //要上传的文件所在的目录,这里放的是D盘的根目录下 Boolean result = FtpUploadFile.uploadFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, fileName, in); if(result){ System.out.println(fileName+"文件上传成功"); }else{ System.out.println(fileName+"文件上传失败"); } } catch (Exception e){ e.printStackTrace(); } } } src/main/java/org/springblade/modules/information/controller/FtpUtil.java
New file @@ -0,0 +1,95 @@ package org.springblade.modules.information.controller; import sun.net.ftp.FtpClient; import sun.net.ftp.FtpProtocolException; import java.io.*; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.ArrayList; import java.util.List; public class FtpUtil { FtpClient ftpClient; /** * 连接FTP服务 * * @param url //IP地址 * @param port//端口号 * @param username//用户名 * @param password//密码 * @return */ public static FtpClient connectFTP(String url, int port, String username, String password) { //创建ftp FtpClient ftp = null; try { //创建地址 SocketAddress addr = new InetSocketAddress(url, port); //连接 ftp = FtpClient.create(); ftp.connect(addr); //登陆 ftp.login(username, password.toCharArray()); ftp.setBinaryType(); } catch (FtpProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ftp; } /** * 取ftp上的文件内容 * * @param ftpFile * @param ftp * @return */ public static List<String> download(String ftpFile, FtpClient ftp) { List<String> list = new ArrayList<String>(); String str = ""; InputStream is = null; BufferedReader br = null; try { // 获取ftp上的文件 is = ftp.getFileStream(ftpFile); //转为字节流 br = new BufferedReader(new InputStreamReader(is)); while ((str = br.readLine()) != null) { list.add(str); } br.close(); } catch (FtpProtocolException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return list; } public static void main(String[] args) { FtpClient ftp = connectFTP("192.168.0.109",21,"anonymous",""); List<String> list = download("D:\\anbao", ftp); for (int i = 0; i < list.size(); i++) { String strOut = null; if (list.get(i).toString() != null) { try { byte[] bs = list.get(i).toString().getBytes(); strOut = new String(bs, "utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(strOut); System.out.println(list.get(i).toString()); } } } src/main/java/org/springblade/modules/information/controller/InformationController.java
@@ -263,14 +263,14 @@ return R.data(list); } public static void main(String[] args) { Information information = new Information(); information.setAddress("2"); information.setDepartmentid("123"); String json=JSON.toJSONString(information);//关键 com.util.OutJson.createJsonFile(json,"d:/anbao/information/","informationSave"); System.out.println("生成文件完成!"); } // public static void main(String[] args) { // Information information = new Information(); // information.setAddress("2"); // information.setDepartmentid("123"); // String json=JSON.toJSONString(information);//关键 // com.util.OutJson.createJsonFile(json,"d:/anbao/information/","informationSave"); // System.out.println("生成文件完成!"); // } } src/main/java/org/springblade/modules/information/controller/OutJson.java
@@ -1,4 +1,4 @@ package com.util; package org.springblade.modules.information.controller; import java.io.File; import java.io.FileOutputStream;