题目:下载一个FTP服务器(Serv-U/Wing FTP Server等),自己写一个FTP客户端,控制台打印出FTP服务器根目录下所有文件及文件夹下的文件名称
要求:
a.客户端不能使用第三方jar,需使用Socket、Socket Server
b.读取的文件目录结构要和服务器一致,名称显示要层级清晰
c.支持中文名称和空格的显示,对比服务器的文件类型,带有文件后缀名
例子:文本文件txt.txt.txt.txt,测试 文档.doc,excel工作表.excel
代码实现:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; import java.util.ArrayList; import java.util.List; /** * 描述: 监听端口 */ public class FTPListener { private int port=0; public void setPort(int port){ this.port = port; } public int getPort(){ return this.port; } public List<String> run(){ List<String> list = new ArrayList<>(); try{ String str = null; Socket socket = new Socket("127.0.0.1",this.port); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); while(!(str = reader.readLine()).contains("\t\n")){ // System.out.println(str); list.add(str); } //关闭链接 reader.close(); socket.close(); } catch(Exception ex){ // 这里会报错的,是一个空指针异常,但是对结果没有影响 } return list; } }
/** * 描述:FTP连接的客户端 */ public class FTPClient { // 主机名称 private String host; //端口号 private int port; // 用户名 private String username; // 密码