Xây dựng chương trình Java kết nối tới máy chủ FTP Server và hiển thị danh sách file theo ngày, kích thước.
Xem thêm:
1. Mô tả bài toán
Viết chương trình FTP Client thực hiện trao đổi dữ liệu giữa Client và Server như sau:
Hiển thị danh sách các tệp tin trên máy chủ bao gồm: tên, kích thước, ngày tạo.
Tạo 2 button sắp xếp theo kích thước và sắp xếp theo ngày tạo.
Video hướng dẫn chi tiết:
2. Code tham khảo
public static final String SERVER_IP = "192.168.30.140"; public static final int SERVER_PORT = 21; public static final String USER = "user1"; public static final String PASS = "P@ssword"; FTPClient client; public GetFile() { initComponents(); client = new FTPClient(); }
2.1 Kết nối với thư mục FTP Server Java Socket
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) { txtListFile.setText(""); try { client.connect(SERVER_IP, SERVER_PORT); int replyCode = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(replyCode)) { txtListFile.setText("Fail. Server reply code: " + replyCode); } boolean status = client.login(USER, PASS); if (status) { txtListFile.setText("Login Successfull"); } else { txtListFile.setText("Login Fail"); } } catch (Exception e) { e.printStackTrace(); } }
2.2 Hiển thị danh sách các tệp tin trên FTP Server
private void btnShowActionPerformed(java.awt.event.ActionEvent evt) { txtListFile.setText(""); try { FTPFile[] fTPFiles = client.listFiles(); String s = ""; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd"); for (FTPFile f : fTPFiles) { if (f.getType() == FTPFile.FILE_TYPE) { LocalDateTime time = LocalDateTime.ofInstant(f.getTimestamp().toInstant(), ZoneId.systemDefault()); s += f.getName() + " " + f.getSize() + " " + dtf.format(time) + "\n"; } } txtListFile.setText(s); } catch (Exception e) { e.printStackTrace(); } }
2.3 Chương trình con hiển thị danh sách file ftp
public static void showFile(FTPClient client, ArrayList<FTPFile> list, JTextArea txtListFile) { try { String s = ""; DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd"); for (FTPFile f : list) { if (f.getType() == FTPFile.FILE_TYPE) { LocalDateTime time = LocalDateTime.ofInstant(f.getTimestamp().toInstant(), ZoneId.systemDefault()); s += f.getName() + " " + f.getSize() + " " + dtf.format(time) + "\n"; } } txtListFile.setText(s); } catch (Exception e) { e.printStackTrace(); } }
2.4 Sắp xếp các tệp tin theo ngày tháng
private void btnDateActionPerformed(java.awt.event.ActionEvent evt) { txtListFile.setText(""); try { FTPFile[] fTPFiles = client.listFiles(); ArrayList<FTPFile> list = new ArrayList<>(); for (FTPFile f : fTPFiles) { list.add(f); } int listSize = list.size(); for (int i = 0; i < listSize; i++) { for (int j = i + 1; j < listSize; j++) { if (list.get(i).getTimestamp().compareTo(list.get(j).getTimestamp()) < 0) { Collections.swap(list, i, j); } } } showFile(client, list, txtListFile); } catch (Exception e) { e.printStackTrace(); } }
2.5 Sắp xếp file theo kích thước
private void btnSizeActionPerformed(java.awt.event.ActionEvent evt) { txtListFile.setText(""); try { FTPFile[] fTPFiles = client.listFiles(); ArrayList<FTPFile> list = new ArrayList<>(); for (FTPFile f : fTPFiles) { list.add(f); } int listSize = list.size(); for (int i = 0; i < listSize; i++) { for (int j = i + 1; j < listSize; j++) { if (list.get(i).getSize() > list.get(j).getSize()) { Collections.swap(list, i, j); } } } showFile(client, list, txtListFile); } catch (Exception e) { e.printStackTrace(); } }
Bài viết liên quan:
phân tích n thành tích các số nguyên tố java socket