最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java快速批量移動文件的實現(xiàn)方法

 更新時間:2014年03月01日 15:14:32   作者:  
這篇文章主要介紹了Java快速批量移動文件的實現(xiàn)方法,需要的朋友可以參考下

文件移動是計算機資源管理常用的一個操作,這在操作系統(tǒng)中可以通過文件的剪切與復(fù)制或鼠標(biāo)拖動來實現(xiàn)。但是在Java文件的編程實現(xiàn)中,大多是通過復(fù)制文件到目的地,再刪除所有文件來實現(xiàn)的。這對于小文件來說看不出什么弊端,但是如果移動幾個大的文件,則會使操作緩慢并且浪費系統(tǒng)資源。本實例將通過File類的renameTo()方法直接實現(xiàn)文件的快速移動,哪怕是移動幾GB的文件也不會需要等待太長時間。

思路分析:

首先是視圖層。在這里有個建議,因為在某些控件的事件中,常常會訪問其他控件,且控件的事件方法用到的參數(shù)幾乎就是固定的ActionEvent類,很少傳遞別的參數(shù)。因此即使視圖是用拖動控件自動生成的,也要在代碼中把這些控件設(shè)為類的成員變量。在本實例中,要用到JPanel控件作為其他控件的容器,JLabel控件用來顯示固定信息,JTextField控件用來顯示要移動的文件和目標(biāo)文件夾,JButton控件用來選擇源文件夾、目標(biāo)文件夾以及實現(xiàn)移動和關(guān)閉程序,JScrollPane用來顯示條形柱,以及JTextArea控件用來顯示操作記錄。
然后是模型層。對于瀏覽按鈕,要獲取源文件夾中的文件名數(shù)組和目標(biāo)文件夾的路徑,這就需要定義一個File型數(shù)組成員變量保存文件名,再定義一個File型成員變量保存目標(biāo)路徑。
選擇源文件的瀏覽按鈕后,首先創(chuàng)建一個JFileChooser文件選擇器,使用JFileChooser類的setMultiSelectionEnabled(true);方法設(shè)置可以多選,通過JFileChooser類的showOpenDialog(this);方法顯示文件選擇對話框,若用戶確認(rèn)則使用JFileChooser類的getSelectedFiles()方法獲取選中的文件數(shù)組并賦值給之前定義的File型數(shù)組成員變量,通過JTextField()類的setText("")方法清空文本框以除去上一次操作的記錄,新建一個StringBuilder對象,使用foreach()循環(huán)遍歷文件數(shù)組,通過StringBuilder類的append()方法連接文件名稱,因為最前面多了個“、”,再使用StringBuilder類的substring()方法獲取所有文件名稱的字符串,通過JTextFieldl類的setText()方法將文件名稱字符串顯示到文本框。
對于選擇目標(biāo)文件夾的瀏覽按鈕,首先創(chuàng)建一個JFileChooser文件選擇器,使用JFileChooser類的setFileSelectionMode()方法設(shè)置選擇器只對文件夾生效,通過JFileChooser類的showOpenDialog()方法顯示文件打開對話框,使用JFileChooser類的getSelectedFile()方法獲取選擇的文件夾,最后用JTextField控件的setText()方法顯示文件夾到文本框。
對于移動按鈕的事件處理方法,首先使用數(shù)組的length屬性判斷文件數(shù)組有無元素,若有則使用foreach()循環(huán)遍歷文件數(shù)組,對數(shù)組中的每一個文件元素創(chuàng)建移動目標(biāo)文件,通過JTextArea控件的append()方法顯示移動記錄,使用File類的renameTo()方法實現(xiàn)文件移動,最后使用JTextArea控件的append()方法顯示移動完成信息。
對于關(guān)閉按鈕的事件處理方法,使用System類的exit()方法退出程序。
代碼如下:

復(fù)制代碼 代碼如下:

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();// 創(chuàng)建文件選擇器
        chooser.setMultiSelectionEnabled(true);// 設(shè)置文件多選
        int option = chooser.showOpenDialog(this);// 顯示文件打開對話框
        if (option == JFileChooser.APPROVE_OPTION) {
            files = chooser.getSelectedFiles();// 獲取選擇的文件數(shù)組
            sourceFolderField.setText("");// 清空文本框
            StringBuilder filesStr = new StringBuilder();
            for (File file : files) {// 遍歷文件數(shù)組
                filesStr.append("、" + file.getName());// 連接文件名稱
            }
            String str = filesStr.substring(1);// 獲取所有文件名稱的字符串
            sourceFolderField.setText(str);// 設(shè)置文件名稱信息到文本框
        } else {
            files = new File[0];
            sourceFolderField.setText("");// 清空文本框
        }
    }

    /**
     * 選擇目標(biāo)文件夾的瀏覽按鈕
     *
     * @param e
     */
    protected void do_browserButton2_actionPerformed(ActionEvent e) {
        JFileChooser chooser = new JFileChooser();// 創(chuàng)建文件選擇器
        // 設(shè)置選擇器只針對文件夾生效
        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("");
        }
    }

    /**
     * 關(guān)閉按鈕的事件處理方法
     *
     * @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)// 判斷文件數(shù)組有無元素
            return;
        for (File file : files) {// 遍歷文件數(shù)組
            File newFile = new File(dir, file.getName());// 創(chuàng)建移動目標(biāo)文件
            infoArea.append(file.getName() + "\t移動到\t" + dir);// 顯示移動記錄
            file.renameTo(newFile);// 文件移動
            infoArea.append("------完成\n");// 顯示移動完成信息
        }
        // 顯示操作完成
        infoArea.append("##################操作完成###################\n");
    }
}

效果如圖:

相關(guān)文章

  • java中String的一些方法深入解析

    java中String的一些方法深入解析

    以下是對java中String的一些方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • 告訴你為什么?ThreadLocal?可以做到線程隔離

    告訴你為什么?ThreadLocal?可以做到線程隔離

    對于 ThreadLocal 我們都不陌生,它的作用如同它的名字用于存放線程本地變量,這篇文章主要介紹了為什么?ThreadLocal?可以做到線程隔離,需要的朋友可以參考下
    2022-07-07
  • SpringBoot 日志的配置及輸出應(yīng)用教程

    SpringBoot 日志的配置及輸出應(yīng)用教程

    Spring Boot 默認(rèn)使用 SLF4J+Logback 記錄日志,并提供了默認(rèn)配置。本文我們將重點介紹Spring Boot日志的配置及輸出。感興趣的小伙伴可以了解一下
    2021-12-12
  • 前端和后端時間不一致問題解決的實踐指南

    前端和后端時間不一致問題解決的實踐指南

    這篇文章主要給大家介紹了關(guān)于前端和后端時間不一致問題解決的實踐指南,在SpringBoot項目中,可以通過設(shè)置application.yml文件中的屬性來統(tǒng)一時間格式和時區(qū),從而確保序列化和反序列化過程中的時間和時區(qū)一致性,需要的朋友可以參考下
    2025-01-01
  • JAVA中的FileWriter流解析

    JAVA中的FileWriter流解析

    這篇文章主要介紹了JAVA中的FileWriter流解析,FileWriter類提供了多種寫入字符的方法,包括寫入單個字符、寫入字符數(shù)組和寫入字符串等,它還提供了一些其他的方法,如刷新緩沖區(qū)、關(guān)閉文件等,需要的朋友可以參考下
    2023-10-10
  • Sequelize 常用操作詳解及實例代碼

    Sequelize 常用操作詳解及實例代碼

    這篇文章主要介紹了Sequelize 常用操作詳解及實例代碼的相關(guān)資料,希望能幫助到大家,需要的朋友可以參考下
    2016-11-11
  • java中有關(guān)構(gòu)造方法中的輸出

    java中有關(guān)構(gòu)造方法中的輸出

    這篇文章主要介紹了java中有關(guān)構(gòu)造方法中的輸出,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • JavaWeb中的組件Filter過濾器解析

    JavaWeb中的組件Filter過濾器解析

    這篇文章主要介紹了JavaWeb中的組件Filter過濾器解析,Filter過濾器是一種用于處理和轉(zhuǎn)換數(shù)據(jù)的工具,常用于Web開發(fā)中,它可以在請求到達(dá)服務(wù)器之前或響應(yīng)返回給客戶端之前對數(shù)據(jù)進(jìn)行預(yù)處理或后處理,需要的朋友可以參考下
    2023-10-10
  • Spring Boot使用JSR-380進(jìn)行校驗的示例

    Spring Boot使用JSR-380進(jìn)行校驗的示例

    這篇文章主要介紹了Spring Boot使用JSR-380進(jìn)行校驗,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java實現(xiàn)貪吃蛇游戲(1小時學(xué)會)

    Java實現(xiàn)貪吃蛇游戲(1小時學(xué)會)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)貪吃蛇游戲,1小時學(xué)會貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論

杭州市| 台南市| 个旧市| 东辽县| 永康市| 呈贡县| 灵石县| 讷河市| 青阳县| 大英县| 台中市| 大理市| 榆中县| 伊春市| 星座| 阜新| 裕民县| 古浪县| 陈巴尔虎旗| 南开区| 读书| 马龙县| 平武县| 安仁县| 莱西市| 睢宁县| 景洪市| 杭州市| 永州市| 林芝县| 繁昌县| 昌吉市| 赤峰市| 岑巩县| 栾川县| 通江县| 沁水县| 杭锦后旗| 安仁县| 资阳市| 万山特区|