1. 程式人生 > >替換文件裏的相關單詞(一)之文件類型為txt

替換文件裏的相關單詞(一)之文件類型為txt

att java讀取 對象 下一個 watermark 跨平臺 post 全球 -c

首先說一下詳細的實現思路:

第一步:我們須要獲取要改動文件的信息,我們能夠通過文件的路徑來獲取文件的FileInputStream,即文件的輸入流,然後調用InputStreamReader讀取文件輸入流信息,將讀入的信息保存到BufferedReader(BufferedReader 從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取。)然後通過readLine()函數將流的信息讀取出來,這樣就完畢了第一步。我們能獲取到文件的信息了

第二步:能夠讀取文件的信息了,我們就能夠通過Matcher這類來匹配我們要替換的單詞,然後用appendReplacement()來替換單詞。而且保存替換後的字符串信息,

最後:將替換後的文件信息又一次打印到新的文件裏去,接下來請看代碼實現:

package com;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * 
 * @author FishRoad
 * @date 2015年8月17日 下午3:04:08
 *
 */
public class Test01 {
    /**
     * 功能:Java讀取txt文件的內容
     * 步驟:1:先獲得文件句柄
     * 2:獲得文件句柄當做是輸入一個字節碼流,須要對這個輸入流進行讀取
     * 3:讀取到輸入流後,須要讀取生成字節流
     * 4:一行一行的輸出。

readline()。

* 備註:須要考慮的是異常情況 * @param filePath */ public static void readTxtFile(String filePath){ try { String encoding="GBK"; File file=new File(filePath); String outStr ; if(file.isFile() && file.exists()){ //推斷文件是否存在 InputStreamReader read = new InputStreamReader( new FileInputStream(file),encoding);//考慮到編碼格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; StringBuffer sb = new StringBuffer(""); while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); sb.append(lineTxt+"\r\n"); } sb.append("What I Want to say is that you are just a good person!"); outStr = sb.toString(); //調用文件的單詞替換方法 String changerStr = tpReplaceWord(outStr); read.close(); FileOutputStream out = new FileOutputStream("F:/我的文件復制.txt"); OutputStreamWriter write = new OutputStreamWriter(out); write.write(changerStr); write.flush(); write.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("讀取文件內容出錯"); e.printStackTrace(); } } public static String tpReplaceWord(String str) { /*StringBuffer strBuf = new StringBuffer(); strBuf.append("Java是由Sun Microsystems公司推出的Java面向對象程序設計語言(下面簡稱Java語言)和Java平臺的總稱。

\r" + "由James Gosling和同事們共同研發,並在1995年正式推出。

\r" + "Java最初被稱為Oak。是1991年為消費類電子產品的嵌入式芯片而設計的。

\r" + "1995年更名為Java,並又一次設計用於開發Internet應用程序。

\r" + "用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:\r" + "跨平臺、動態Web、Internet計算。\r" + "從此。Java被廣泛接受並推動了Web的迅速發展,經常使用的瀏覽器均支持Javaapplet。\r" + "還有一方面,Java技術也不斷更新。Java自面世後就很流行,發展迅速。對C++語言形成有力沖擊。\r" + "在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。\r" + "2010年Oracle公司收購Sun Microsystems。

\r"); String a = strBuf.toString();*/ // 生成Pattern對象而且編譯一個簡單的正則表達式"Java" Pattern p = Pattern.compile("Java"); // 用Pattern類的matcher()方法生成一個Matcher對象 Matcher m = p.matcher(str); StringBuffer sb = new StringBuffer(); int i = 0; // 使用find()方法查找第一個匹配的對象 boolean result = m.find(); // 使用循環將句子裏全部的Java找出並替換再將內容加到sb裏 while (result) { i++; m.appendReplacement(sb, " 呵呵 "); // System.out.println("第" + i + "次匹配後sb的內容是:" + sb); // 繼續查找下一個匹配對象 result = m.find(); } // 最後調用appendTail()方法將最後一次匹配後的剩余字符串加到sb裏; m.appendTail(sb); System.out.println("調用m.appendTail(sb)後sb的終於內容是:\r" + sb.toString()); return sb.toString(); } public static void main(String argv[]){ //該文件的信息就是上面的strBuf中的關於java的信息 String filePath = "F:\\aaaaa.txt"; // "res/"; readTxtFile(filePath); } }

技術分享圖片

替換文件裏的相關單詞(一)之文件類型為txt