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

首頁 > 編程 > Java > 正文

java實現查找文本內容替換功能示例

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

思路:

先看視圖層,要有一個JButton控件用來選擇文件,一個JTextField控件顯示選中文件的絕對路徑,一個JLabel控件提示用戶輸入搜索文本,一個JLabel控件提示用戶輸入替換后的文本,一個JTextField標簽供用戶輸入要搜索的文本,一個JTextField標簽供用戶輸入替換后的文本,一個JButton控件執行替換,一個JButton控件用來打開修改后的文件。
對于選擇文件按鈕,使用JButton類的addActionListener()方法為其綁定事件,在該事件中定義actionPerformed()函數,在該函數體中調用選擇文件的方法。
在選擇文件方法中,首先創建JFileChooser文件選擇器,使用JFileChooser類的setFileFilter()方法創建文件擴展名過濾器,再使用JFileChooser類的setFileSelectionMode()方法設置文件選擇模式為文件,通過JFileChooser類的showOpenDialog()方法顯示文件打開對話框,確定用戶按下打開按鈕,而非取消按鈕后,通過JFileChooser類的getSelectedFile()方法獲取用戶選擇的文件對象,使用JTextField類的setText()方法顯示文件信息到文本框。
對于替換按鈕,同選擇文件按鈕,使用JButton類的addActionListener()方法為其綁定事件,在該事件中定義actionPerformed()函數,在該函數體中調用替換文本的方法。
在替換文本方法中,首先使用TextField類的getText()方法獲取要搜索的文本和要替換成的文本,若搜索文本不為空則嘗試創建FileReader文件輸入流和char緩沖字符數組以及StringBuilder字符串構建器,在while()循環中使用FileReader類的read()方法讀取文件內容到字符串構建器,讀取完畢后使用FileReader類的close()方法關閉輸入流,使用StringBuilder類的replace()方法從構建器中生成字符串,并替換搜索文本,然后創建FileWriter文件輸出流,使用FileWriter類的write()方法把替換完成的字符串寫入文件內,然后使用FileWriter類的close()方法關閉輸出流,然后依次捕獲FileNotFoundException異常和IOException異常,最后使用JOptionPane類的showMessageDialog()方法提示用戶替換完成。
對于打開文件按鈕,使用JButton類的addActionListener()方法為其綁定事件,在該事件中定義actionPerformed()函數,在該函數體中調用打開文件的方法。
在打開文件方法中嘗試使用 Desktop.getDesktop().edit(file);,并捕獲IOException異常。
代碼如下:

復制代碼 代碼如下:

import java.awt.BorderLayout;

public class ReplaceFileText extends JFrame {

    /**
     *
     */
    private static final long serialVersionUID = 8674569541853793419L;
    private JPanel contentPane;
    private JTextField fileField;
    private JTextField searchTextField;
    private JTextField replaceTextField;
    private File file;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ReplaceFileText frame = new ReplaceFileText();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public ReplaceFileText() {
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 501, 184);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(10, 91));
        contentPane.add(panel, BorderLayout.CENTER);
        GridBagLayout gbl_panel = new GridBagLayout();
        gbl_panel.columnWidths = new int[] { 81, 0, 0, 66, 0 };
        gbl_panel.rowHeights = new int[] { 23, 0, 0, 0, 0 };
        gbl_panel.columnWeights = new double[] { 0.0, 0.0, 0.0, 1.0,
                Double.MIN_VALUE };
        gbl_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0,
                Double.MIN_VALUE };
        panel.setLayout(gbl_panel);

        JButton button = new JButton("選擇文件");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_actionPerformed(e);
            }
        });
        GridBagConstraints gbc_button = new GridBagConstraints();
        gbc_button.anchor = GridBagConstraints.NORTHWEST;
        gbc_button.insets = new Insets(0, 0, 5, 5);
        gbc_button.gridx = 0;
        gbc_button.gridy = 0;
        panel.add(button, gbc_button);

        fileField = new JTextField();
        fileField.setEditable(false);
        GridBagConstraints gbc_fileField = new GridBagConstraints();
        gbc_fileField.gridwidth = 3;
        gbc_fileField.insets = new Insets(0, 0, 5, 0);
        gbc_fileField.fill = GridBagConstraints.HORIZONTAL;
        gbc_fileField.gridx = 1;
        gbc_fileField.gridy = 0;
        panel.add(fileField, gbc_fileField);
        fileField.setColumns(10);

        JLabel label = new JLabel("搜索文本:");
        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 = 1;
        panel.add(label, gbc_label);

        searchTextField = new JTextField();
        GridBagConstraints gbc_searchTextField = new GridBagConstraints();
        gbc_searchTextField.gridwidth = 3;
        gbc_searchTextField.insets = new Insets(0, 0, 5, 0);
        gbc_searchTextField.fill = GridBagConstraints.HORIZONTAL;
        gbc_searchTextField.gridx = 1;
        gbc_searchTextField.gridy = 1;
        panel.add(searchTextField, gbc_searchTextField);
        searchTextField.setColumns(10);

        JLabel label_1 = new JLabel("替換為:");
        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 = 2;
        panel.add(label_1, gbc_label_1);

        replaceTextField = new JTextField();
        GridBagConstraints gbc_replaceTextField = new GridBagConstraints();
        gbc_replaceTextField.gridwidth = 3;
        gbc_replaceTextField.insets = new Insets(0, 0, 5, 0);
        gbc_replaceTextField.fill = GridBagConstraints.HORIZONTAL;
        gbc_replaceTextField.gridx = 1;
        gbc_replaceTextField.gridy = 2;
        panel.add(replaceTextField, gbc_replaceTextField);
        replaceTextField.setColumns(10);

        JPanel panel_1 = new JPanel();
        GridBagConstraints gbc_panel_1 = new GridBagConstraints();
        gbc_panel_1.gridwidth = 4;
        gbc_panel_1.fill = GridBagConstraints.BOTH;
        gbc_panel_1.gridx = 0;
        gbc_panel_1.gridy = 3;
        panel.add(panel_1, gbc_panel_1);

        JButton replaceButton = new JButton("替換");
        replaceButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_replaceButton_actionPerformed(e);
            }
        });
        panel_1.add(replaceButton);

        JButton openfileButton = new JButton("打開文件");
        openfileButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_2_actionPerformed(e);
            }
        });
        panel_1.add(openfileButton);
    }

    /**
     * 選擇文件按鈕事件處理方法
     *
     * @param e
     */
    protected void do_button_actionPerformed(ActionEvent e) {
        JFileChooser chooser = new JFileChooser("./");// 創建文件選擇器
        // 設置文件擴展名過濾器
        chooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt",
                "java", "php", "html", "htm"));
        // 設置文件選擇模式
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        // 顯示文件打開對話框
        int option = chooser.showOpenDialog(this);
        // 確定用戶按下打開按鈕,而非取消按鈕
        if (option != JFileChooser.APPROVE_OPTION)
            return;
        // 獲取用戶選擇的文件對象
        file = chooser.getSelectedFile();
        // 顯示文件信息到文本框
        fileField.setText(file.toString());
    }

    /**
     * 替換按鈕的事件處理方法
     *
     * @param e
     */
    protected void do_replaceButton_actionPerformed(ActionEvent event) {
        String searchText = searchTextField.getText();// 獲取搜索文本
        String replaceText = replaceTextField.getText();// 獲取替換文本
        if (searchText.isEmpty())
            return;
        try {
            FileReader fis = new FileReader(file);// 創建文件輸入流
            char[] data = new char[1024];// 創建緩沖字符數組
            int rn = 0;
            StringBuilder sb = new StringBuilder();// 創建字符串構建器
            while ((rn = fis.read(data)) > 0) {// 讀取文件內容到字符串構建器
                String str = String.valueOf(data, 0, rn);
                sb.append(str);
            }
            fis.close();// 關閉輸入流
            // 從構建器中生成字符串,并替換搜索文本
            String str = sb.toString().replace(searchText, replaceText);
            FileWriter fout = new FileWriter(file);// 創建文件輸出流
            fout.write(str.toCharArray());// 把替換完成的字符串寫入文件內
            fout.close();// 關閉輸出流
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        JOptionPane.showMessageDialog(null, "替換完成");
    }

    /**
     * 打開文件按鈕的事件處理方法。
     *
     * @param e
     */
    protected void do_button_2_actionPerformed(ActionEvent e) {
        try {
            if (file == null)
                return;
            Desktop.getDesktop().edit(file);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品一区久久久久久| 欧美视频在线观看免费网址| 日韩麻豆第一页| 97精品国产aⅴ7777| 国产免费一区二区三区在线能观看| 久久久久久国产精品| 欧美激情xxxx性bbbb| 国产区精品在线观看| 77777少妇光屁股久久一区| 久久视频免费观看| 国产成人97精品免费看片| 91地址最新发布| 国产日韩在线精品av| 欧美一级大胆视频| 亚洲一级黄色av| 日韩精品在线播放| 亚洲第一在线视频| 裸体女人亚洲精品一区| 亚洲国产成人在线视频| 久久大大胆人体| 日韩在线观看视频免费| 亚洲伊人第一页| 欧美性色视频在线| 青草热久免费精品视频| 久久亚洲综合国产精品99麻豆精品福利| 国产欧美精品xxxx另类| 国产成人小视频在线观看| 午夜精品视频在线| 91久久久久久| 国产精品视频专区| 欧美高清视频一区二区| 少妇精69xxtheporn| 欧美激情一区二区久久久| 91精品国产亚洲| 久久久久久久爱| 欧美国产一区二区三区| 欧美精品精品精品精品免费| 不卡在线观看电视剧完整版| 国产精品一区av| 久久精品国产成人精品| 亚洲影院高清在线| 欧美色道久久88综合亚洲精品| 色久欧美在线视频观看| 国产精品久久综合av爱欲tv| 久久激情五月丁香伊人| 亚洲偷欧美偷国内偷| 最新中文字幕亚洲| 日本不卡视频在线播放| 亚洲精品国产品国语在线| 亚洲人精品午夜在线观看| 自拍偷拍免费精品| 亚洲欧美一区二区三区久久| 久久久国产视频91| 国产区精品视频| 亚洲高清久久久久久| 在线观看日韩www视频免费| 亚洲精品国产精品久久清纯直播| 中文字幕精品网| 亚洲va国产va天堂va久久| 日本不卡视频在线播放| 亚洲电影免费观看高清完整版在线观看| 国产日产欧美a一级在线| 精品呦交小u女在线| 欧美在线免费看| 日韩精品高清在线观看| 成人写真视频福利网| 亚洲男人av电影| 日韩国产高清污视频在线观看| 国产成人精品日本亚洲| 国产成人鲁鲁免费视频a| 日日噜噜噜夜夜爽亚洲精品| 亚洲人成毛片在线播放| 亚洲美女精品成人在线视频| 亚洲网站在线播放| 亚洲日本欧美中文幕| 欧美高清无遮挡| 国产精品第一第二| 亚洲最大福利视频| 91精品国产91久久久久久不卡| 久久夜精品va视频免费观看| 欧美精品www| 黑人巨大精品欧美一区二区| 日韩在线播放av| 色中色综合影院手机版在线观看| 91精品国产高清| 亚洲色在线视频| 欧美日韩国内自拍| 精品香蕉在线观看视频一| 国产主播喷水一区二区| 国产成人涩涩涩视频在线观看| 国产精品99久久久久久www| 国产午夜精品视频免费不卡69堂| 成人a免费视频| 色先锋资源久久综合5566| 91午夜理伦私人影院| 爽爽爽爽爽爽爽成人免费观看| 2018中文字幕一区二区三区| 国产成+人+综合+亚洲欧美丁香花| 4444欧美成人kkkk| 日韩国产在线播放| 粉嫩老牛aⅴ一区二区三区| 92看片淫黄大片看国产片| 在线看福利67194| 亚洲国产精品免费| 日韩h在线观看| 国产精品久久久久不卡| 中文字幕亚洲欧美日韩在线不卡| 欧美电影免费观看高清完整| 亚洲美女性视频| 日韩视频在线免费| 日韩av在线看| 国产亚洲美女久久| 久久久久日韩精品久久久男男| 欧美电影在线免费观看网站| 国产欧美 在线欧美| 日本精品久久电影| 国产精品成人av性教育| 成人久久一区二区| 国产精品一区二区三区毛片淫片| 国产精品免费久久久久影院| 98午夜经典影视| 国产精品久久久久aaaa九色| 国产精品爽爽ⅴa在线观看| 成人av番号网| 夜夜狂射影院欧美极品| 亚洲国产99精品国自产| 久久成人精品一区二区三区| 欧美激情按摩在线| 亚洲欧美一区二区精品久久久| 国产性色av一区二区| 欧美成人精品h版在线观看| 亚洲在线免费看| 黄色一区二区在线观看| 原创国产精品91| 国产精品一香蕉国产线看观看| 欧美一级大胆视频| 欧美在线免费观看| 国产精品久久久久久亚洲调教| 欧美大片在线影院| 亚洲人成网站在线播| 国产亚洲欧美日韩一区二区| 国产精品青青在线观看爽香蕉| 日韩成人激情视频| 欧美日韩激情美女| 国产一区香蕉久久| 成人午夜激情免费视频| 成人性生交大片免费看视频直播| 欧美乱大交xxxxx另类电影| 亚洲欧美国产精品va在线观看| 日韩精品一区二区三区第95| 中文字幕亚洲第一| 国产精品99蜜臀久久不卡二区| 欧美日韩国产中文字幕| www.色综合| 久久亚洲一区二区三区四区五区高| 欧美激情亚洲国产| 在线中文字幕日韩| 亚洲色图五月天| 日韩国产激情在线| 久久精品在线播放| 日韩精品欧美国产精品忘忧草| 欧美电影在线观看网站| 正在播放欧美一区| 欧美性猛交xxxx偷拍洗澡|