FTP客户端的设计与实现
private JTextField password = new JTextField(); //密码 private JTextField status = new JTextField();//当前状态
private JButton connectButton=new JButton(\连接\连接按钮
private JButton closeButton=new JButton(\断开连接\断开连接按钮
private JPopupMenu popup = new JPopupMenu();;
private JMenuItem refresh = new JMenuItem(\刷新\右键弹出菜单 private JMenuItem delete = new JMenuItem(\删除\
private JMenuItem download = new JMenuItem(\下载\ private JMenuItem upload = new JMenuItem(\上传\ private JMenuItem rename = new JMenuItem(\重命名\private JMenuItem upDir = new JMenuItem(\上级目录\
private JMenuItem showLog = new JMenuItem(\显示日志信息\
final DefaultListModel m=new DefaultListModel(); //显示文件列表 JList fileList = new JList(m); JScrollPane fileScrollPane;
private Dimension faceSize = new Dimension(400, 600); //框架大小
public FTP() {
init();
createPopup(); //弹出菜单 time = new Date(); try {
write = new FileWriter(\
out = new PrintWriter(write,true); }
catch(IOException ioe) { ioe.printStackTrace(); }
status.setEditable(false);
this.add(status,BorderLayout.SOUTH); //下方
connectButton.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
connect();
第 8 页 共 27 页
FTP客户端的设计与实现
}
});
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
close();
time = new Date();
out.println(time+\离开服务器:\
} });
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //添加框架的关闭事件处理
this.pack();
this.setSize(faceSize); //设置框架的大小
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation( (int) (screenSize.width - faceSize.getWidth()) / 2,
(int) (screenSize.height - faceSize.getHeight()) / 2);
this.setResizable(false);
this.setTitle(\服务端\ //设置标题
setVisible(true);
this.addWindowListener( //关闭程序时的操作
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
close();
System.exit(0); } } ); }
void init() {
Container contentPane = getContentPane(); //获取面板
第 9 页 共 27 页
FTP客户端的设计与实现
contentPane.setLayout(new BorderLayout()); //设置布局
JPanel up = new JPanel(); //设置面板上方控件布局 up.setLayout(new GridLayout(3,2)); url.setText(\port.setText(\
username.setText(\password.setText(\JPanel no1 = new JPanel(); no1.setLayout(new BorderLayout());
no1.add(new JLabel(\服务器:\no1.add(url,BorderLayout.CENTER);
JPanel no2 = new JPanel(); no2.setLayout(new BorderLayout());
no2.add(new JLabel(\端口号:\
no2.add(port,BorderLayout.CENTER);
JPanel no3 = new JPanel(); no3.setLayout(new BorderLayout());
no3.add(new JLabel(\用户名:\no3.add(username,BorderLayout.CENTER);
JPanel no4 = new JPanel(); no4.setLayout(new BorderLayout());
no4.add(new JLabel(\密码 :\no4.add(password,BorderLayout.CENTER); up.add(no1); up.add(no2); up.add(no3); up.add(no4);
up.add(connectButton); up.add(closeButton);
closeButton.setEnabled(false);
this.add(up,BorderLayout.NORTH); //上方 fileScrollPane = new JScrollPane(fileList,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
fileScrollPane.setPreferredSize(new Dimension(300,400));
第 10 页 共 27 页
FTP客户端的设计与实现
}
this.add(fileScrollPane,BorderLayout.CENTER); //中部
3.2.2功能实现函数
使用SUN公司提供的FTP客户端类库。 主要包括4个类:
sun.net.TelnetInputStream sun.net.TelnetOutputStream sun.net.ftp.FtpClient
sun.net.ftp.FtpLoginException
编写FtpBean类实现业务逻辑,包含一个FtpClient类的对象ftpClient。包含的方法如下: (1) 建立连接
String connect(String dir, String hostname, int port, String username,String passwd) 使用 ftpClient = new FtpClient(hostname, port); ftpClient.login(username, passwd); (2) 获取文件名列表
List
使用 InputStreamReader isr = null; BufferedReader br = null;
isr = new InputStreamReader(this.ftpClient.nameList(this.getDir())); br = new BufferedReader(isr); 获取输入流来得到目录中的文件信息 (3) 判断路径
boolean isDir(String line)
使用line.startsWith(\来判断
(4) 设置路径
boolean setPath(String path)
使用ftpClient.cd(path);实现
(5) 上传文件
boolean uploadFile(String localFile, String targetFileName)
使用 ftpClient.cd(path);实现
(5) 上传文件
第 11 页 共 27 页
相关推荐: