Java读取FTP上TXT文件内容

1.pom.xml添加连接FTP依赖包

<dependency>
    <groupId>commons-net</groupId>
    <artifactId>commons-net</artifactId>
	<version>3.1</version>
</dependency>

2.测试读取文件

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketException;
import java.text.SimpleDateFormat;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class Test {

	public static void main(String[] args) throws Exception {
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    FTPClient ftpClient = FtpUtil.connectFTP("127.0.0.1", 21, "123456", "123456");
	    FTPFile[] ftpFiles = ftpClient.listFiles();
            for (FTPFile ftpFile : ftpFiles) {	
        	String fileName = ftpFile.getName();//获取文件名
        	String suffix = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();//后缀名
                //ftp设置的是utc时间,和系统时间有8小时时差,所以需要加上时差
                Long lastModifiedTime = ftpFile.getTimestamp().getTimeInMillis() + ftpFile.getTimestamp().getTimeZone().getOffset(0);        	
                System.out.println("读取到文件:"+fileName+" 文件最后修改时间:"+sdf.format(lastModifiedTime));
		if(suffix.equals(".txt")){
	            InputStream is = ftpClient.retrieveFileStream(ftpFile.getName());
		    BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
		    String content = "";
                    while ((content = br.readLine()) != null){ //一次读入一行数据
            	        System.out.println(content); 
                    }
                    br.close();
                    is.close();
                    //结束事务(有流返回时需手动调用,否则会报输入流为空)
                    ftpClient.completePendingCommand();
		}
            }
        }
	
        /**
         * 连接FTP
         * @param hostname 服务器地址
         * @param port 端口号(默认为21)
         * @param username 帐号
         * @param password 密码
         */
	public static FTPClient connectFTP(String hostname, int port, String username, String password){
	    FTPClient ftp = new FTPClient();   
	    try {
		//连接FTP服务器
		ftp.connect(hostname, port);
		boolean login = ftp.login(username, password);
                if (login) {
                    System.out.println(">>>>>>>>FTP-->登录成功>>>>>>>>>>>>>");
                }else {
                    System.out.println(">>>>>>>>FTP-->登录失败>>>>>>>>>>>>>");
                }
	    } catch (SocketException e) {
		e.printStackTrace();
	    } catch (IOException e) {
		e.printStackTrace();
	    }
	    return ftp;
	}
}
发布了95 篇原创文章 · 获赞 131 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/rexueqingchun/article/details/100122435