📄 ftpframe.java~10~
字号:
public String getDIR(String path){ String DIRName; int ch; //分解字符串得到目录和文件名 int begin=55; DIRName=path.substring(begin).trim(); return DIRName; }//---------------------------------------------------------------------------// 浏览程序: public void setTree(String Path,DefaultMutableTreeNode TreePath)// 作用:构造jTree对象的目录树 public void setTree(String Path,DefaultMutableTreeNode TreePath){ //递归遍历目录树 try{ File source = new File(Path);//得到源文件路径 String[] fileName=source.list();//的到该目录下文件列表 for(int i=0;i<fileName.length;i++){//显示选择了的文件列表 File fileMem=new File(source.getPath(),fileName[i]); if(fileMem.isDirectory()){//是目录则添加目录 DefaultMutableTreeNode TreeMem =new DefaultMutableTreeNode(fileMem.getName()); TreePath.add(TreeMem);//在树中添加目录 setTree(fileMem.getPath(),TreeMem);//递归遍历目录树 }//end if else{//是文件则添加节点 DefaultMutableTreeNode TreeMem =new DefaultMutableTreeNode(fileMem.getName()); TreePath.add(TreeMem);//添加节点 } }//end for }//End try catch(Exception ei) { JOptionPane.showMessageDialog(this, "系统出错:"+ei);//显示提示信息。 } } void JCheckbox1_propertyChange(PropertyChangeEvent e) { if(jCheckbox1.isSelected()){ jTextField1.setText("anonymous"); jTextField2.setText("a"); } }//---------------------------------------------------------------------------// 浏览程序: void jButton5_actionPerformed(ActionEvent e)// 作用:选择需要的本地文件目录 void jButton5_actionPerformed(ActionEvent e) { JFileChooser JFileCh = new JFileChooser();//创建文件对话框 JFileCh.setFileSelectionMode(JFileCh.DIRECTORIES_ONLY);//只选择目录 int returnVal = JFileCh.showOpenDialog(this);//显示文件对话框 if(returnVal == JFileChooser.APPROVE_OPTION){ File root2 = JFileCh.getSelectedFile();//得到根目录文件 if(root2.isFile()) root2=root2.getParentFile();//如果得到的不是目录,则使用他的目录 DefaultMutableTreeNode rootTree2 =new DefaultMutableTreeNode(root2.getPath()); setTree(root2.getPath(),rootTree2);//遍历目录树 model1.setRoot(rootTree2);//设置模型的根节点 model1.reload();//重新构造树视图 }//end if else JOptionPane.showMessageDialog(this, "没有选择文件");//显示提示信息。 }//---------------------------------------------------------------------------// 浏览程序:void list1_mouseClicked(MouseEvent e)// 作用:FTP服务器文件目录改变 void list1_mouseClicked(MouseEvent e) { //单击列表框的操作 StringBuffer buf=new StringBuffer(); if(ftp==null) list1.removeAll(); if(list1.getRows()>0){ //选择列表框中单击选中的内容 String dir=list1.getSelectedItem().trim(); try { //如果是目录,则进入目录 ftp.cd(dir); //列表框需要重新刷新 ReloadList(); jTextArea1.append("进入目录: "); jTextArea1.append(dir); jTextArea1.append("\n"); } catch (IOException ex) { //否则,表明点击的内容是ftp上的一个文件 jTextArea1.append(dir); jTextArea1.append(":是一个文件\n"); } } }//---------------------------------------------------------------------------// 登录程序: void jButton1_actionPerformed(ActionEvent e)// 作用:登录连接到FTP服务器。 void jButton1_actionPerformed(ActionEvent e) { int ch; String hostname=jTextField1.getText(); //如果已经打开了FTP服务器,则先关闭FTP文件服务器 try { if (ftp!=null) ftp.closeServer(); } catch (IOException ex) { ex.printStackTrace(); } //连接到服务器 try { statusLabel.setText("正在连接,请等待....."); ftp= new FtpClient(hostname); //登录Ftp服务器 ftp.login(jTextField2.getText(),jPasswordField1.getText()); //使用二进制协议 ftp.binary(); } catch(FtpLoginException ex){ //没有主机的登录权限 statusLabel.setText("无权限与主机:"+hostname+"连接!"); } catch (IOException ex){ //连接主机失败 statusLabel.setText("连接主机:"+hostname+"失败!"); } catch(SecurityException ex) { //用户或者密码可能不对 statusLabel.setText("用户或者密码可能不对,无权限与主机:"+hostname+"连接!"); } //连接成功后的显示 statusLabel.setText("连接主机:"+hostname+"成功!"); //列表框需要重新刷新 ReloadList(); }//---------------------------------------------------------------------------// 关闭程序: void jButton3_actionPerformed(ActionEvent e)// 作用:关闭FTP服务器连接 void jButton2_actionPerformed(ActionEvent e) { try { //关闭FTP服务器连接 if (ftp!=null) { ftp.closeServer(); list1.removeAll(); } } catch (IOException ex) { ex.printStackTrace(); } statusLabel.setText("断开主机连接成功!"); }//---------------------------------------------------------------------------// 上载程序: void jButton3_actionPerformed(ActionEvent e)// 作用:上载本地文件到ftp目录 void jButton3_actionPerformed(ActionEvent e) { //上载本地文件到ftp服务器中 if(jTree1.isSelectionEmpty() ){ jTextArea1.append("没有选择本地文件上载\n"); }else{ File file1=new File(conPath()); //判断是否是文件,如果是目录则不与操作,以后的程序可能会考虑添加目录的操作 if(file1.isFile()){ String filename=jTree1.getSelectionPath().getLastPathComponent().toString(); int ch; try { File localFile = new File(conPath() ); RandomAccessFile sendFile = new RandomAccessFile( conPath() , "r"); //上载文件到ftp服务器中 sendFile.seek(0); TelnetOutputStream outs = ftp.put(filename); DataOutputStream outputs = new DataOutputStream(outs); //上载处理中...... while (sendFile.getFilePointer() < sendFile.length()) { ch = sendFile.read(); outputs.write(ch); } //上载完成,关闭输入输出流 outs.close(); sendFile.close(); } catch (IOException ex) { ex.printStackTrace(); } //列表框需要重新刷新 ReloadList(); } } }//---------------------------------------------------------------------------// 下载程序: void jButton4_actionPerformed(ActionEvent e)// 作用:下载ftp文件到本地目录 void jButton4_actionPerformed(ActionEvent e) { //下载ftp文件到本地目录 if(jTree1.isSelectionEmpty()){ //如果没有选择目录和文件提示用户 jTextArea1.append("没有选择本地目录用于下载!!\n"); }else{ File file1=new File(conPath()); if(file1.isFile()){ //如果是文件也要提示用户选择的是文件 jTextArea1.append("没有选择本地目录用于下载"+jTree1.getSelectionPath().getLastPathComponent().toString()+"\n"); jTextArea1.append("而选择的是文件:"+conPath()+"\n"); }else{ //下载文件到指定的目录里 jTextArea1.append("选择的下载本地目录"+jTree1.getSelectionPath().getLastPathComponent().toString()+"\n"); jTextArea1.append("目录:"+conPath()+"\n"); //可以选择多个文件和目录 String [] filenames=list1.getSelectedItems(); for(int i=0;i<filenames.length;i++){ String filename=filenames[i]; boolean isfile=false; try { //判断是否为目录,如果是目录则在本地创建一个目录 ftp.cd(filename); ftp.cdUp(); File localDir = new File(conPath()+"\\"+filename) ; localDir.mkdir(); } catch (IOException ex) { isfile=true; } if(isfile){ //对文件的处理,即下载文件到本地硬盘中 int ch; try{ File localFile = new File(conPath()+"\\"+filename) ; RandomAccessFile getFile = new RandomAccessFile((conPath()+"\\"+filename),"rw"); getFile.seek(0); TelnetInputStream ins = ftp.get(filename); DataInputStream Inputs = new DataInputStream(ins); //下载处理...... while ((ch = Inputs.read()) >= 0) { getFile.write(ch); } //处理完成,关闭输入输出流 ins.close(); getFile.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } } }//---------------------------------------------------------------------------// 浏览程序: String conPath( )// 作用:用于获取本地目录树中的文件路径 String conPath( ){ //用于获取本地目录树中的文件路径 TreePath treePath1=jTree1.getSelectionPath(); String dir1,dir=treePath1.getPathComponent(0).toString(); int i,count=treePath1.getPathCount(); //对于象“c:\”之类的盘符路径需要特殊处理 if((dir.length())==3) dir1=dir.substring(0,2); else dir1=dir; for(i=1;i<count;i++){ dir1=dir1+"\\"+treePath1.getPathComponent(i); } return dir1; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -