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