Java读取FTP上的txt文件

来源:互联网 发布:淘宝预热商品怎么删除 编辑:程序博客网 时间:2024/04/29 05:59
package com.etwin.gateway.shopping.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.SocketException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; /** * @describe 读取FTP上的文件 * @auto li.wang * @date 2013-11-18 下午4:07:34 */ public class FtpUtils { private FTPClient ftpClient; private String fileName, strencoding; private String ip = "113.108.96.3";        // 服务器IP地址 private String userName = "test";        // 用户名 private String userPwd = "test";        // 密码 private int port = 21;      // 端口号 private String path = "/SZX348/OPFQ/";        // 读取文件的存放目录 /**   * init ftp servere   */ public FtpUtils() {   this.reSet(); } public void reSet() {   // 以当前系统时间拼接文件名   fileName = "20131112114850793835861000010161141169.txt";   strencoding = "UTF-8";   this.connectServer(ip, port, userName, userPwd, path); } /**   * @param ip   * @param port   * @param userName   * @param userPwd   * @param path   * @throws SocketException   * @throws IOException function:连接到服务器   */ public void connectServer(String ip, int port, String userName, String userPwd, String path) {   ftpClient = new FTPClient();   try {    // 连接    ftpClient.connect(ip, port);    // 登录    ftpClient.login(userName, userPwd);    if (path != null && path.length() > 0) {     // 跳转到指定目录     ftpClient.changeWorkingDirectory(path);    }   } catch (SocketException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   } } /**   * @throws IOException function:关闭连接   */ public void closeServer() {   if (ftpClient.isConnected()) {    try {     ftpClient.logout();     ftpClient.disconnect();    } catch (IOException e) {     e.printStackTrace();    }   } } /**   * @param path   * @return function:读取指定目录下的文件名   * @throws IOException   */ public List<String> getFileList(String path) {   List<String> fileLists = new ArrayList<String>();   // 获得指定目录下所有文件名   FTPFile[] ftpFiles = null;   try {    ftpFiles = ftpClient.listFiles(path);   } catch (IOException e) {    e.printStackTrace();   }   for (int i = 0; ftpFiles != null && i < ftpFiles.length; i++) {    FTPFile file = ftpFiles[i];    if (file.isFile()) {     fileLists.add(file.getName());    }   }   return fileLists; } /**   * @param fileName   * @return function:从服务器上读取指定的文件   * @throws ParseException   * @throws IOException   */ public String readFile() throws ParseException {   InputStream ins = null;   StringBuilder builder = null;   try {    // 从服务器上读取指定的文件    ins = ftpClient.retrieveFileStream(fileName);    BufferedReader reader = new BufferedReader(new InputStreamReader(ins, strencoding));    String line;    builder = new StringBuilder(150);    while ((line = reader.readLine()) != null) {     System.out.println(line);     builder.append(line);    }    reader.close();    if (ins != null) {     ins.close();    }    // 主动调用一次getReply()把接下来的226消费掉. 这样做是可以解决这个返回null问题    ftpClient.getReply();   } catch (IOException e) {    e.printStackTrace();   }   return builder.toString(); } /**   * @param fileName function:删除文件   */ public void deleteFile(String fileName) {   try {    ftpClient.deleteFile(fileName);   } catch (IOException e) {    e.printStackTrace();   } } /**   * @param args   * @throws ParseException   */ public static void main(String[] args) throws ParseException {   FtpUtils ftp = new FtpUtils();   String str = ftp.readFile();   System.out.println(str); } }


转自 http://www.cxyclub.cn/n/50660/


0 0
原创粉丝点击