1. 程式人生 > >java原始碼——對檔案內容的查詢和替換(開始寫介面咯)

java原始碼——對檔案內容的查詢和替換(開始寫介面咯)

問題是:“鍵盤輸入檔案的路徑、查詢內容和替換內容,對指定路徑的檔案的內容進行查詢和替換。”

好久沒寫介面了,今天熟悉一下介面的書寫和監聽器操作。

這個問題的本身不是很難,重點應該是檔案處理時的各種可能出現的錯誤進行處理。因此寫程式碼時需要非常細心,並且把錯誤處理到位。

另外,這個介面寫的很規範,註釋也都很到位,也可以直接拿走留作他用。

上原始碼。

Replace.java

package com.fuxuemingzhu.replace.main;

import java.awt.Color;//顏色
import java.awt.Font;//字型
import java.awt.event.ActionEvent;//事件處理
import java.awt.event.ActionListener;//事件監聽
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;//按鈕
import javax.swing.JFrame;//框架
import javax.swing.JLabel;//標籤
import javax.swing.JOptionPane;//訊息視窗
import javax.swing.JPanel;//面板
import javax.swing.JTextField;//文字框

/**
 * <p>
 * Title: Replace
 * </p>
 * <p>
 * Description:視覺化的txt的內容替換程式
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email 
[email protected]
* * @date 2014年12月5日 下午6:27:50 */ public class Replace extends JFrame { /** * serialVersionUID * */ private static final long serialVersionUID = 1L; /** * pnl_mian 主面板 */ public JPanel pnl_mian; /** * lbl_help 提示面板 */ public JLabel lbl_help; /** * lbl_find 查詢內容提示 */ public JLabel lbl_find; /** * lbl_replace 替換內容提示 */ public JLabel lbl_replace; /** * lbl_path 路徑提示 */ public JLabel lbl_path; /** * txt_path 文字路徑輸入 */ public JTextField txt_path; /** * txt_find 查詢內容輸入 */ public JTextField txt_find; /** * txt_replace 替換內容輸入 */ public JTextField txt_replace; /** * btn_sub 確定按鍵 */ public JButton btn_sub; /** * btn_reset 重置按鍵 */ public JButton btn_reset; /** * path 檔案路徑字串 */ public static String path; /** * find 查詢內容字串 */ public static String find; /** * replace 替換內容字串 */ public static String replace; /** * <p> * Title:Replace * </p> * <p> * Description:構造方法 * </p> */ public Replace() { pnl_mian = new JPanel(); lbl_help = new JLabel(); lbl_find = new JLabel(); lbl_replace = new JLabel(); lbl_path = new JLabel(); txt_path = new JTextField(); txt_find = new JTextField(); txt_replace = new JTextField(); btn_sub = new JButton(); btn_reset = new JButton(); userInit(); } /** * <p> * Title: userInit * </p> * <p> * Description:使用者介面設定 * </p> * */ public void userInit() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 設定關閉框架的同時結束程式 this.setSize(400, 250);// 設定框架大小為長500,寬200 this.setResizable(false);// 設定框架不可以改變大小 this.setTitle("查詢替換");// 設定框架標題 this.pnl_mian.setLayout(null);// 設定面板佈局管理 this.pnl_mian.setBackground(Color.cyan);// 設定面板背景顏色 this.lbl_help.setText("查詢替換");// 設定標籤標題 this.lbl_help.setFont(new Font("宋體", Font.BOLD | Font.ITALIC, 14));// 設定標籤字型 this.lbl_help.setForeground(Color.RED);// 設定標籤字型顏色 this.lbl_path.setText("文字路徑:"); this.lbl_find.setText("查詢文字:"); this.lbl_replace.setText("替換為:"); this.btn_sub.setText("確定"); this.btn_reset.setText("重置"); this.lbl_help.setBounds(150, 25, 60, 20);// 設定標籤x座標120,y座標20,長60,寬20 this.lbl_path.setBounds(50, 50, 60, 20); this.lbl_find.setBounds(50, 80, 60, 20); this.lbl_replace.setBounds(50, 110, 60, 25); this.txt_path.setBounds(110, 50, 200, 20); this.txt_find.setBounds(110, 80, 200, 20); this.txt_replace.setBounds(110, 110, 200, 20); this.btn_sub.setBounds(105, 160, 60, 20); this.btn_sub.addActionListener(new ActionListener()// 匿名類實現ActionListener介面 { public void actionPerformed(ActionEvent e) { btnsub_ActionEvent(e); } }); this.btn_reset.setBounds(195, 160, 60, 20); this.btn_reset.addActionListener(new ActionListener()// 匿名類實現ActionListener介面 { public void actionPerformed(ActionEvent e) { btnreset_ActionEvent(e); } }); this.pnl_mian.add(lbl_help);// 載入標籤到面板 this.pnl_mian.add(lbl_path); this.pnl_mian.add(lbl_find); this.pnl_mian.add(lbl_replace); this.pnl_mian.add(txt_path); this.pnl_mian.add(txt_find); this.pnl_mian.add(txt_replace); this.pnl_mian.add(btn_sub); this.pnl_mian.add(btn_reset); this.add(pnl_mian);// 載入面板到框架 this.setVisible(true);// 設定框架可顯 } /** * <p> * Title: btnsub_ActionEvent * </p> * <p> * Description:點選確定鍵的操作 * </p> * * @param e * */ public void btnsub_ActionEvent(ActionEvent e) { path = txt_path.getText(); find = txt_find.getText(); replace = String.valueOf(txt_replace.getText()); if (path.equals("")) { JOptionPane.showMessageDialog(null, "檔案路徑不能為空!", "錯誤", JOptionPane.ERROR_MESSAGE); return; } else if (find.equals("")) { JOptionPane.showMessageDialog(null, "查詢物件不能為空!", "錯誤", JOptionPane.ERROR_MESSAGE); return; } else if (replace.equals("")) { JOptionPane.showMessageDialog(null, "替換內容不能為空!", "錯誤", JOptionPane.ERROR_MESSAGE); return; } else { File file = new File(path); try { changeFile(file); } catch (Exception e1) { e1.printStackTrace(); return; } this.dispose(); } } /** * <p> * Title: btnreset_ActionEvent * </p> * <p> * Description:點選重置鍵的操作 * </p> * * @param e * */ public void btnreset_ActionEvent(ActionEvent e) { txt_path.setText(""); txt_find.setText(""); txt_replace.setText(""); } /** * <p> * Title: changeFile * </p> * <p> * Description:讀取檔案 * </p> * * @param file * @throws Exception * */ public static void changeFile(File file) throws IOException { BufferedReader br = null; try { if (!file.exists()) { JOptionPane.showMessageDialog(null, "檔案路徑有誤!", "錯誤", JOptionPane.ERROR_MESSAGE); return; } FileReader fileReader = new FileReader(file); br = new BufferedReader(fileReader); StringBuffer sbf = new StringBuffer(""); try { for (String tmp = null; (tmp = br.readLine()) != null; tmp = null) { // 在這裡做替換操作 if (tmp.contains(find)) { tmp = tmp.replaceAll(find, replace); sbf.append(tmp); sbf.append(System.getProperty("line.separator")); // 檔案的重新寫入 BufferedWriter bw = new BufferedWriter(new FileWriter( path)); bw.write(sbf.toString()); JOptionPane.showMessageDialog(null, "檔案內容已經替換成功!", "確定", JOptionPane.YES_OPTION); bw.close(); } else { JOptionPane.showMessageDialog(null, "檔案中不含有要替換的內容!", "確定", JOptionPane.YES_OPTION); } } br.close(); } catch (IOException e1) { JOptionPane.showMessageDialog(null, "檔案讀取有誤!", "錯誤", JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); return; } } catch (FileNotFoundException e1) { JOptionPane.showMessageDialog(null, "檔案路徑有誤!", "錯誤", JOptionPane.ERROR_MESSAGE); e1.printStackTrace(); return; } } /** * <p> * Title: main * </p> * <p> * Description:main方法,程式的入口 * </p> * * @param args * */ public static void main(String[] args) { new Replace(); } }
下面是各種介面,各種秀。嗯~

首先是正常執行介面。

查詢不到要替換的內容時的處理。

輸入錯誤路徑時的處理。

輸入內容為空時的處理。



相關推薦

java原始碼——檔案內容查詢替換開始介面

問題是:“鍵盤輸入檔案的路徑、查詢內容和替換內容,對指定路徑的檔案的內容進行查詢和替換。” 好久沒寫介面了,今天熟悉一下介面的書寫和監聽器操作。 這個問題的本身不是很難,重點應該是檔案處理時的各種可能出現的錯誤進行處理。因此寫程式碼時需要非常細心,並且把錯誤處理到位。 另

Word中使用正則表示式進行查詢替換高效進行文書處理

術語 開始前,我們先定義一對術語: 萬用字元指的是您可以用來代表一個或多個字元的鍵盤字元。例如,星號 (*) 通常代表一個或多個字元,問號 (?) 通常代表單個字元。 對我們來說,正則表示式指的是您可以用來查詢和替換文字模式的文字字元和萬用字元組合。文字字元指的是必須存在於目標文

SpringBoot通過WorkBook快速實現Excel的匯入匯出包括資料校驗

之前轉載過一篇對Excel基本操作相關的文章,這篇文章的瀏覽量迅速飆升,以至於在我部落格的熱門文章中排到了第三的位置,不過那篇轉載的文章實用性差並且講解不是很清晰,所以打算趁著今天休息,寫一篇關於SpringBoot通過WorkBook快速實現對Excel的匯入、匯出、資料校驗的文章,也是便於日後查

jsurl進行編碼解碼三種方式區別

*** 只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不經過編碼直接用於 URL。 ***例如:搜尋的中文關鍵字,複製網址之後再貼上就會發現該URL已經被轉碼。 1、escape 和 unescape 原理:對除ASCII字母、數字、標點符號 @  *  _  +

python程式設計練習----檔案進行簡單的操作

python對檔案進行簡單的操作(讀寫) 基於python3.6 程式碼: #開啟檔案及讀寫方法 f=open(r'C:\Users\lenovo\Desktop\somefile.txt','w') f.write("hello world!") f.write("\

使用org.w3c.dom.*進行XML檔案的解析建立包括Cdata的解析

最近在專案中使用org.w3c.dom對xml檔案進行解析,該包對於較小的xml檔案的操作非常簡便,推薦大家在使用。 首先,對於org.w3c.dom.*的包,我們不需要額外去進行引用,在jdk1.6自帶的rt.jar中就包涵該包。 public viod getXMLNo

java 檔案內容進行替換工作

讀取檔案程式碼如下: File file = new File("C:/Users/Administrator/Desktop/test1.json"); try { String content = FileUtils.readFileToString(file

java按行讀取檔案檔案進行加密解密

package com.alibaba.datax.plugin.reader.selfxmlfilereader.util; import java.io.UnsupportedEncodingException; import java.security

Java學習不走彎路教程3.從檔案內容查詢開始

一. 前言在前兩章教程中,分別介紹了DOS環境搭建和Eclipse環境搭建。本章將帶大家實現用簡單SQL語句查詢檔案。注:1.本文針對初學Java的同學訓練學習思路,請不要太糾結於細節問題。2.本文旨在達到拋磚引玉的效果,希望大家擴充套件本例子,以學到更多知識的精髓。 二. 寫給初學Java的同學在介紹本章內

Java 實現mongodb and or and or聯合查詢操作

AND:publicvoid testAnd(){          //agender='female' AND age > 27          DBObject queryCondition = new BasicDBObject();          que

Java 實現mongodb and or and or聯合查詢操作

 轉載: AND: public void testAnd(){ //agender='female' AND age > 27 DBObject q

java讀取pdf檔案的圖片文字內容

引用的jar包: pdfbox-1.8.13.jar fontbox-1.8.13.jar public static void main(String[] args) {PDFReader pdfReader1 = new PDFReader();pdfReader1.

java實現檔案的讀操作(按要求在檔案指定位置新增內容)

本問提到的讀檔案進行讀操作使用的是FileInputStream方法,寫操作使用的是FileOutputStream方法,將字元內容進行拼接主要使用的是str+"a"和StringBuffer方法.下面是一個指令碼檔案#!/bin/bash #下面設定輸入檔案,把使用者執行p

在vs2013中使用正則表示式查詢替換文字內容

        我們有的時候需要替換程式碼中的某些內容,因為替換的內容“不一致”,所以不能簡單的使用一個replace搞定。這裡有幾個解決方法,核心思想是一致的,程式設計師不要做體力活,能交給程式或指令碼的就交給程式或指令碼來完成。         我先提一個替換的需求,這

查詢替換目錄中所有檔案中的某個字串

1、查詢目錄下包含某個字串的檔案 例:查詢 dir 目錄下所有包含 str 的檔案。 grep -lr 'str' dir 2、vim替換單個檔案中所有字串方法 例:替換當前檔案中所有 old 為 new :%s/old/new/g 3、替換目錄及子目錄下所有

java學習總結16.05.25eclipse的查詢替換功能 Ctrl+F

有很多文字編輯器,或IDE都有查詢和替換的功能,而且大多數查詢/替換功能的快捷鍵都是Ctrl+F,前幾天,我在eclipse下試了一下,eclipse也有查詢/替換的功能。下面來說一下這個功能。 在eclipse中可使用快捷鍵(預設)Ctrl+F,或按Edit--Find/

java中使用Pattern類中和Matcher類進行查詢替換,你會嗎?

前言 無論是哪一門語言,我們總會用到正則表示式來進行字串的查詢和替換。Java中也不為過,我曾經寫過一個網頁---正則表示式線上測試。那時候,我還沒有開始學習Java,不知道Java支援正則表示式,所以我的第一個方案是想辦法將資料傳輸到後臺,然後利用Shell指令碼正則表示

[Python] Pandas 資料進行查詢替換、篩選、排序、重複值缺失值處理

[TOC] 查詢和替換是日常工作中很常見的資料預處理操作,下面就來講解如何使用pandas模組中的函式對DataFrame中的資料進行查詢和替換。 ## 1. 資料檔案 [產品統計表.7z](https://files.cnblogs.com/files/feily/%E4%BA%A7%E5%93%81%E

JAVA象創建初始化過程

2.3 人的 cin 類型變量 認識 handle product window blank 1.Java中的數據類型   Java中有3個數據類型:基本數據類型(在Java中,boolean、byte、short、int、long、char、float、double這八種