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;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章