亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java快速批量移動文件的實現方法

2019-11-26 15:38:52
字體:
來源:轉載
供稿:網友

文件移動是計算機資源管理常用的一個操作,這在操作系統中可以通過文件的剪切與復制或鼠標拖動來實現。但是在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");
    }
}

效果如圖:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91欧美日韩一区| 久久99青青精品免费观看| 国产91色在线免费| 欧美性一区二区三区| 欧美日韩美女在线| 久久99国产精品久久久久久久久| 亚洲欧美国内爽妇网| 免费91麻豆精品国产自产在线观看| 欧美一性一乱一交一视频| 欧美一区视频在线| 国产精品日韩av| zzijzzij亚洲日本成熟少妇| 亚洲护士老师的毛茸茸最新章节| 日韩精品视频观看| 九九热精品视频| 久热爱精品视频线路一| 久久久久国产精品免费网站| 亚洲欧美综合区自拍另类| 亚洲欧美日韩国产成人| 在线国产精品播放| 91久久精品国产91久久| 欧美丝袜美女中出在线| 亚洲成人精品视频| 国内精品伊人久久| 欧美性理论片在线观看片免费| 青青在线视频一区二区三区| 97视频在线观看播放| 久久综合五月天| 2019中文字幕在线| 欧美性猛交99久久久久99按摩| 欧美日韩国产影院| 亚洲人成电影网站色| 日韩av男人的天堂| 亚洲成人激情图| 欧美野外猛男的大粗鳮| 成人国产精品久久久| 国产精品旅馆在线| 欧美亚洲成人免费| 欧美怡红院视频一区二区三区| 国产欧美亚洲精品| 欧美日韩性生活视频| 成人美女免费网站视频| 欧美中文字幕在线视频| 国产精品扒开腿做爽爽爽男男| 中文字幕在线看视频国产欧美| www.欧美精品| 4k岛国日韩精品**专区| 成人在线国产精品| 亚洲精品小视频| 日韩大胆人体377p| 色偷偷噜噜噜亚洲男人| 欧美午夜片欧美片在线观看| 日韩中文字幕久久| 亚洲精品自拍视频| 久久精视频免费在线久久完整在线看| 国内精品模特av私拍在线观看| 日韩精品小视频| 精品偷拍各种wc美女嘘嘘| 日韩电影中文字幕| 久久影院在线观看| 亚洲第一免费播放区| 国产91色在线播放| 精品国产视频在线| 亚洲色图在线观看| 中文在线资源观看视频网站免费不卡| 久久久国产精彩视频美女艺术照福利| 欧美午夜xxx| 亚洲视频一区二区| 97视频免费在线看| 久久国产精品久久久久久| 欧美一级淫片丝袜脚交| 麻豆一区二区在线观看| 欧美日韩国产91| 国产精品日韩精品| 国产精品露脸自拍| 久久亚洲私人国产精品va| 国产精国产精品| 欧美野外wwwxxx| 亚洲男人天堂手机在线| 国产日韩精品在线观看| 国产91精品久久久久久久| 91成品人片a无限观看| 日韩欧美精品免费在线| 精品久久久久久久久久久| 亚洲精品之草原avav久久| 色综合久久88| 日韩网站免费观看| 精品久久久久久久久国产字幕| 亚洲激情 国产| 欧美视频在线观看免费网址| 精品美女国产在线| 黑人巨大精品欧美一区二区一视频| 性欧美办公室18xxxxhd| 欧美小视频在线观看| 欧美精品福利在线| 中文字幕日韩高清| 91精品在线观看视频| 欧美尤物巨大精品爽| 久久成人一区二区| 亚洲精品小视频| 日韩在线观看免费av| 欧美性高潮床叫视频| 在线视频欧美日韩精品| 国产精品免费久久久| 国产成人高潮免费观看精品| 97久久精品国产| 91精品久久久久久久久久另类| 日韩成人在线免费观看| 萌白酱国产一区二区| 日韩中文字幕在线看| 成人高h视频在线| 日韩欧美一区视频| 国产成人av网| 中文字幕国产亚洲2019| 亚洲美女av在线播放| 亚洲精品中文字幕女同| 久久香蕉国产线看观看av| 精品久久久久久久久久久| 日本高清视频精品| 国产精品日日做人人爱| 国产精品444| 中文字幕亚洲欧美日韩在线不卡| 成人高清视频观看www| 国产精品视频久久久| 国产极品jizzhd欧美| 日韩中文第一页| 欧美一区亚洲一区| 亚洲国产天堂网精品网站| 日韩欧亚中文在线| 欧美成人精品h版在线观看| 欧美日韩性视频| 欧美国产日韩精品| 国产精品亚洲综合天堂夜夜| 亚洲色图第三页| 中文字幕亚洲色图| 亚洲精品v欧美精品v日韩精品| 亚洲国产欧美在线成人app| 91精品啪aⅴ在线观看国产| 国模吧一区二区| 欧美激情视频在线免费观看 欧美视频免费一| 国产99久久精品一区二区 夜夜躁日日躁| 日本欧美国产在线| 国产欧美日韩中文字幕| 亚洲第一区中文字幕| 8x拔播拔播x8国产精品| 亚洲a在线观看| 欧美激情性做爰免费视频| 欧美精品少妇videofree| 欧美激情国产日韩精品一区18| 欧洲s码亚洲m码精品一区| 欧美成人手机在线| 亚洲精品日韩久久久| 日韩中文字幕网| 久久久久久国产精品| 久久久久久久久久国产| 欧美日韩国产成人| 久久久久久久久中文字幕| 亚洲国产精品人人爽夜夜爽| 久久久久久高潮国产精品视| 亚洲美女免费精品视频在线观看| 大桥未久av一区二区三区| 亚洲免费中文字幕| 国产精品一区二区三区在线播放| 日韩欧美aⅴ综合网站发布|