• Java编程——拷贝文件


    package newpackage1;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    
    //拷贝文件演示
    
    public class CopyFileDemo extends JFrame{
        JFileChooser fileChooser;    //文件选择器
        JTextField jtfSourceFile;    //源文件路径
        JTextField jtfTargetFile;    //目标文件路径
        JButton selectFile1;    //选择文件按钮
        JButton selectFile2;
        JButton copyButton;    //拷贝按钮
    
        public CopyFileDemo(){
            super("拷贝文件演示");    //调用父类构造函数
            fileChooser=new JFileChooser();    //实例化文件选择器
    
            Container container=getContentPane();    //得到容器
            jtfSourceFile=new JTextField(16);    //实例化组件
            jtfTargetFile=new JTextField(16);
            selectFile1=new JButton("选择");
            selectFile2=new JButton("选择");
            copyButton=new JButton("拷贝");
            Box box=Box.createVerticalBox();    //实例化Box,用于容纳组件
            JPanel panel=new JPanel();
            panel.add(new JLabel("源  文 件"));    //增加组件到面板(panel)上
            panel.add(jtfSourceFile);
            panel.add(selectFile1);
            box.add(panel);    //增加组件到Box上
            panel=new JPanel();
            panel.add(new JLabel("目标文件"));
            panel.add(jtfTargetFile);
            panel.add(selectFile2);
            box.add(panel);
            box.add(copyButton);
            container.add(box);    //增加组件到容器上
    
    
            selectFile1.addActionListener(new SelectFileListener());    //设置选择文件的事件处理
            selectFile2.addActionListener(new SelectFileListener());
            copyButton.addActionListener(new ActionListener(){    //拷贝按钮事件处理
                public void actionPerformed(ActionEvent event) {
                    String sourceFile=jtfSourceFile.getText();    //得到源文件路径
                    String targetFile=jtfTargetFile.getText();    //得到目标文件路径
                    if (copy(sourceFile,targetFile)){    //拷贝文件
                        JOptionPane.showMessageDialog(CopyFileDemo.this,"拷贝成功");    //显示拷贝成功信息
                    }
                    else{
                        JOptionPane.showMessageDialog(CopyFileDemo.this,"拷贝失败");    //发生错误
                    }
                }
            });
    
    
            setSize(340,160);    //设置窗口尺寸
            setVisible(true);    //设置窗口可视
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //关闭窗口时退出程序
        }
    
        class SelectFileListener implements ActionListener {    //取得目录内容的事件处理
            public void actionPerformed(ActionEvent event) {
                if (fileChooser.showOpenDialog(CopyFileDemo.this)==JFileChooser.APPROVE_OPTION){    //弹出文件选择器,并判断是否点击了打开按钮
                    String fileName=fileChooser.getSelectedFile().getAbsolutePath();    //得到选择文件的绝对路径
                    if (event.getSource().equals(selectFile1)){    //判断事件来自于哪个按钮
                        jtfSourceFile.setText(fileName);    //设置源文件路径
                    }
                    else{
                        jtfTargetFile.setText(fileName);    //设置目标文件路径
                    }
              }
            }
        }
    
        public boolean copy(String file1,String file2){    //拷贝文件方法
            try{
                java.io.File fileIn=new java.io.File(file1);    //用路径名生成源文件
                java.io.File fileOut=new java.io.File(file2);    //用路径名生成目标文件
                FileInputStream fin=new FileInputStream(fileIn);    //得到文件输入流
                FileOutputStream fout=new FileOutputStream(fileOut);    //得到文件输出流
                byte[] bytes=new byte[1024];    //初始化字节数组,用于缓冲
                int c;
                while((c=fin.read(bytes))!=-1){    //如果文件未读完
                    fout.write(bytes,0,c);    //将读取的字节数组写入目标文件输出流中
                }
                fin.close();    //关闭输入流
                fout.close();    //关闭输出流
                return true;
            }
            catch(Exception e){
                return false;
            }
        }
    
        public static void main(String[] args){
            new CopyFileDemo();
        }
    }

  • 相关阅读:
    Vue2.0组件实现动态搜索引擎(一)
    6款 jQuery Lightbox图片查看触控插件
    js学习总结----移动端概述和hybird模式
    js学习总结----less常用的方法
    js学习总结----less的基础语法和使用
    js学习总结----less基础和编译
    js学习总结----柯里化函数
    js学习总结----案例分页之前端代码实现和请求处理
    js学习总结----案例分页之服务器内容和数据的处理
    js学习总结----案例分页之需求分析和制定api文档及测试数据
  • 原文地址:https://www.cnblogs.com/liao-pxsoftware15/p/8047928.html
Copyright © 2020-2023  润新知