📄 frame1.java~214~
字号:
// 浏览程序: 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);//遍历目录树
model2.setRoot(rootTree2);//设置模型的根节点
model2.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(),jTextField3.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 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(jTree2.isSelectionEmpty() ){
jTextArea1.append("没有选择本地文件上载\n");
}else{
File file1=new File(conPath());
//判断是否是文件,如果是目录则不与操作,以后的程序可能会考虑添加目录的操作
if(file1.isFile()){
String filename=jTree2.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(jTree2.isSelectionEmpty()){
//如果没有选择目录和文件提示用户
jTextArea1.append("没有选择本地目录用于下载!!\n");
}else{
File file1=new File(conPath());
if(file1.isFile()){
//如果是文件也要提示用户选择的是文件
jTextArea1.append("没有选择本地目录用于下载"+jTree2.getSelectionPath().getLastPathComponent().toString()+"\n");
jTextArea1.append("而选择的是文件:"+conPath()+"\n");
}else{
//下载文件到指定的目录里
jTextArea1.append("选择的下载本地目录"+jTree2.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( ){
//用于获取本地目录树中的文件路径
TreePath treePath1=jTree2.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 + -