中文JAVA技術平等自由協作創造

          Java專題文章博客和開源

          常用鏈接

          統計

          最新評論

          Java實現快速批量移動文件

            Java實現快速批量移動文件
            文件移動是計算機資源管理常用的一個操作,這在操作系統中可以通過文件的剪切與復制或鼠標拖動來實現。但是在Java文件的編程實現中,大多是通過復制文件到目的地,再刪除所有文件來實現的。這對于小文件來說看不出什么弊端,但是如果移動幾個大的文件,則會使操作緩慢并且浪費系統資源。本實例將通過File類的renameTo()方法直接實現文件的快速移動,哪怕是移動幾GB的文件也不會需要等待太長時間。
            思路分析:
            首先是視圖層。在這里有個建議,因為在某些控件的事件中,常常會訪問其他控件,且控件的事件方法用到的參數幾乎就是固定的ActionEvent類,很少傳遞別的參數。因此即使視圖是用拖動控件自動生成的,也要在代碼中把這些控件設為類的成員變量。在本實例中,要用到JPanel控件作為其他控件的容器,JLabel控件用來顯示固定信息,JTextField控件用來顯示要移動的文件和目標文件夾,JButton控件用來選擇源文件夾、目標文件夾以及實現移動和關閉程序,JScrollPane用來顯示條形柱,以及JTextArea控件用來顯示操作記錄托福答案
            然后是模型層。對于瀏覽按鈕,要獲取源文件夾中的文件名數組和目標文件夾的路徑,這就需要定義一個File型數組成員變量保存文件名,再定義一個File型成員變量保存目標路徑。
            選擇源文件的瀏覽按鈕后,首先創建一個JFileChooser文件選擇器,使用JFileChooser類的setMultiSelectionEnabled(true);方法設置可以多選,通過JFileChooser類的showOpenDialog(this);方法顯示文件選擇對話框,若用戶確認則使用JFileChooser類的getSelectedFiles()方法獲取選中的文件數組并賦值給之前定義的File型數組成員變量,通過JTextField()類的setText("")方法清空文本框以除去上一次操作的記錄,新建一個StringBuilder對象,使用foreach()循環遍歷文件數組,通過StringBuilder類的append()方法連接文件名稱,因為最前面多了個“、”,再使用StringBuilder類的substring()方法獲取所有文件名稱的字符串,通過JTextFieldl類的setText()方法將文件名稱字符串顯示到文本框。
            對于選擇目標文件夾的瀏覽按鈕,首先創建一個JFileChooser文件選擇器,使用JFileChooser類的setFileSelectionMode()方法設置選擇器只對文件夾生效,通過JFileChooser類的showOpenDialog()方法顯示文件打開對話框,使用JFileChooser類的getSelectedFile()方法獲取選擇的文件夾,最后用JTextField控件的setText()方法顯示文件夾到文本框。
            對于移動按鈕的事件處理方法,首先使用數組的length屬性判斷文件數組有無元素,若有則使用foreach()循環遍歷文件數組,對數組中的每一個文件元素創建移動目標文件,通過JTextArea控件的append()方法顯示移動記錄,使用File類的renameTo()方法實現文件移動,最后使用JTextArea控件的append()方法顯示移動完成信息。
            對于關閉按鈕的事件處理方法,使用System類的exit()方法退出程序。
            代碼如下:
            import java.awt.EventQueue;
            public class QuickMoveFiles extends JFrame {
            /**
            *
            */
            private static final long serialVersionUID = -666045931923008374L;
            private JPanel contentPane;
            private JTextArea infoArea;
            private JTextField sourceFolderField;
            private JTextField targetFolderField;
            private File[] files;
            private File dir;
            /**
            * Launch the application.
            */
            public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
            public void run() {
            try {
            QuickMoveFiles frame = new QuickMoveFiles();
            frame.setVisible(true);
            } catch (Exception e) {
            e.printStackTrace();
            }
            }
            });
            }
            /**
            * Create the frame.
            */
            public QuickMoveFiles() {
            setTitle("\u5FEB\u901F\u6279\u91CF\u79FB\u52A8\u6587\u4EF6");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 507, 299);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            GridBagLayout gbl_contentPane = new GridBagLayout();
            gbl_contentPane.columnWidths = new int[] { 0, 178, 0, 0, 0, 0 };
            gbl_contentPane.rowHeights = new int[] { 0, 0, 169, 0, 0 };
            gbl_contentPane.columnWeights = new double[] { 0.0, 1.0, 0.0, 0.0, 0.0,
            Double.MIN_VALUE };
            gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, 1.0, 0.0,
            Double.MIN_VALUE };
            contentPane.setLayout(gbl_contentPane);
            JLabel label = new JLabel("\u9009\u62E9\u6E90\u6587\u4EF6\uFF1A");
            GridBagConstraints gbc_label = new GridBagConstraints();
            gbc_label.anchor = GridBagConstraints.EAST;
            gbc_label.insets = new Insets(0, 0, 5, 5);
            gbc_label.gridx = 0;
            gbc_label.gridy = 0;
            contentPane.add(label, gbc_label);
            sourceFolderField = new JTextField();
            GridBagConstraints gbc_sourceFolderField = new GridBagConstraints();
            gbc_sourceFolderField.gridwidth = 3;
            gbc_sourceFolderField.insets = new Insets(0, 0, 5, 5);
            gbc_sourceFolderField.fill = GridBagConstraints.HORIZONTAL;
            gbc_sourceFolderField.gridx = 1;
            gbc_sourceFolderField.gridy = 0;
            contentPane.add(sourceFolderField, gbc_sourceFolderField);
            sourceFolderField.setColumns(10);
            JButton browserButton1 = new JButton("\u6D4F\u89C8");
            browserButton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            do_browserButton1_actionPerformed(e);
            }
            });
            GridBagConstraints gbc_browserButton1 = new GridBagConstraints();
            gbc_browserButton1.insets = new Insets(0, 0, 5, 0);
            gbc_browserButton1.gridx = 4;
            gbc_browserButton1.gridy = 0;
            contentPane.add(browserButton1, gbc_browserButton1);
            JLabel label_1 = new JLabel(
            "\u9009\u62E9\u76EE\u6807\u6587\u4EF6\u5939\uFF1A");
            GridBagConstraints gbc_label_1 = new GridBagConstraints();
            gbc_label_1.anchor = GridBagConstraints.EAST;
            gbc_label_1.insets = new Insets(0, 0, 5, 5);
            gbc_label_1.gridx = 0;
            gbc_label_1.gridy = 1;
            contentPane.add(label_1, gbc_label_1);
            targetFolderField = new JTextField();
            GridBagConstraints gbc_targetFolderField = new GridBagConstraints();
            gbc_targetFolderField.gridwidth = 3;
            gbc_targetFolderField.insets = new Insets(0, 0, 5, 5);
            gbc_targetFolderField.fill = GridBagConstraints.HORIZONTAL;
            gbc_targetFolderField.gridx = 1;
            gbc_targetFolderField.gridy = 1;
            contentPane.add(targetFolderField, gbc_targetFolderField);
            targetFolderField.setColumns(10);
            JButton browserButton2 = new JButton("\u6D4F\u89C8");
            browserButton2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            do_browserButton2_actionPerformed(e);
            }
            });
            GridBagConstraints gbc_browserButton2 = new GridBagConstraints();
            gbc_browserButton2.insets = new Insets(0, 0, 5, 0);
            gbc_browserButton2.gridx = 4;
            gbc_browserButton2.gridy = 1;
            contentPane.add(browserButton2, gbc_browserButton2);
            JLabel label_2 = new JLabel("\u64CD\u4F5C\u8BB0\u5F55\uFF1A");
            GridBagConstraints gbc_label_2 = new GridBagConstraints();
            gbc_label_2.anchor = GridBagConstraints.EAST;
            gbc_label_2.insets = new Insets(0, 0, 5, 5);
            gbc_label_2.gridx = 0;
            gbc_label_2.gridy = 2;
            contentPane.add(label_2, gbc_label_2);
            JScrollPane scrollPane = new JScrollPane();
            GridBagConstraints gbc_scrollPane = new GridBagConstraints();
            gbc_scrollPane.gridwidth = 4;
            gbc_scrollPane.insets = new Insets(0, 0, 5, 0);
            gbc_scrollPane.fill = GridBagConstraints.BOTH;
            gbc_scrollPane.gridx = 1;
            gbc_scrollPane.gridy = 2;
            contentPane.add(scrollPane, gbc_scrollPane);
            infoArea = new JTextArea();
            scrollPane.setViewportView(infoArea);
            JButton moveButton = new JButton("\u79FB\u52A8");
            moveButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            do_moveButton_actionPerformed(e);
            }
            });
            GridBagConstraints gbc_moveButton = new GridBagConstraints();
            gbc_moveButton.insets = new Insets(0, 0, 0, 5);
            gbc_moveButton.gridx = 1;
            gbc_moveButton.gridy = 3;
            contentPane.add(moveButton, gbc_moveButton);
            JButton closeButton = new JButton("\u5173\u95ED");
            closeButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
            do_closeButton_actionPerformed(e);
            }
            });
            GridBagConstraints gbc_closeButton = new GridBagConstraints();
            gbc_closeButton.insets = new Insets(0, 0, 0, 5);
            gbc_closeButton.gridx = 2;
            gbc_closeButton.gridy = 3;
            contentPane.add(closeButton, gbc_closeButton);
            }
            /**
            * 選擇源文件的瀏覽按鈕
            *
            * @param e
            */
            protected void do_browserButton1_actionPerformed(ActionEvent e) {
            JFileChooser chooser = new JFileChooser();// 創建文件選擇器
            chooser.setMultiSelectionEnabled(true);// 設置文件多選
            int option = chooser.showOpenDialog(this);// 顯示文件打開對話框
            if (option == JFileChooser.APPROVE_OPTION) {
            files = chooser.getSelectedFiles();// 獲取選擇的文件數組
            sourceFolderField.setText("");// 清空文本框
            StringBuilder filesStr = new StringBuilder();
            for (File file : files) {// 遍歷文件數組托福答案
            filesStr.append("、" + file.getName());// 連接文件名稱
            }
            String str = filesStr.substring(1);// 獲取所有文件名稱的字符串
            sourceFolderField.setText(str);// 設置文件名稱信息到文本框
            } else {
            files = new File[0];
            sourceFolderField.setText("");// 清空文本框
            }
            }
            /**
            * 選擇目標文件夾的瀏覽按鈕
            *
            * @param e
            */
            protected void do_browserButton2_actionPerformed(ActionEvent e) {
            JFileChooser chooser = new JFileChooser();// 創建文件選擇器
            // 設置選擇器只針對文件夾生效
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            int option = chooser.showOpenDialog(this);// 顯示文件打開對話框
            if (option == JFileChooser.APPROVE_OPTION) {
            dir = chooser.getSelectedFile();// 獲取選擇的文件夾
            targetFolderField.setText(dir.toString());// 顯示文件夾到文本框
            } else {
            dir = null;
            targetFolderField.setText("");
            }
            }
            /**
            * 關閉按鈕的事件處理方法
            *
            * @param e
            */
            protected void do_closeButton_actionPerformed(ActionEvent e) {
            System.exit(0);
            }
            /**
            * 移動按鈕的事件處理方法
            *
            * @param e
            */
            protected void do_moveButton_actionPerformed(ActionEvent e) {
            if (files.length <= 0 || dir == null)// 判斷文件數組有無元素
            return;
            for (File file : files) {// 遍歷文件數組托福答案
            File newFile = new File(dir, file.getName());// 創建移動目標文件
            infoArea.append(file.getName() + "\t移動到\t" + dir);// 顯示移動記錄
            file.renameTo(newFile);// 文件移動
            infoArea.append("------完成\n");// 顯示移動完成信息
            }
            // 顯示操作完成
            infoArea.append("##################操作完成###################\n");
            }
            }

          posted on 2014-05-15 11:29 好不容易 閱讀(293) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 宜州市| 金山区| 潍坊市| 安康市| 澄城县| 定远县| 玛纳斯县| 武清区| 梁平县| 新源县| 通化市| 汝南县| 嘉祥县| 郴州市| 滨州市| 逊克县| 石嘴山市| 洛隆县| 巴中市| 博爱县| 辽中县| 甘德县| 资溪县| 秦安县| 巴南区| 抚州市| 邻水| 微博| 麻城市| 贵南县| 马鞍山市| 海口市| 长白| 沙洋县| 玉溪市| 东方市| 贞丰县| 钟山县| 贺州市| 惠东县| 沅江市|