台灣最大程式設計社群網站
線上人數
1058
 
會員總數:245121
討論主題:189030
歡迎您免費加入會員
討論區列表 >> Java >> 請問如何修改txt檔裡的文字內容?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問如何修改txt檔裡的文字內容?
價值 : 10 QP  點閱數:7850 回應數:2

樓主

阿宗
初學者
44 44
508 79
發送站內信

假設在D槽下,有一個testin.txt的檔案,
testin.txt裡儲存的文字為如下:

This is a Test process.
Please change Test to Abcd.

我想寫一個程式讀進這個檔案,把這裡面的文字"Test"改變成"Abcd",
並且寫出成一個新的檔案為testout.txt,
而這testout.txt的內容就為:

This is a Abcd process.
Please change Abcd to Abcd.

我知道有2種讀取及寫入方式...
(1)是一行一行的讀取...好像是用BufferedReader.ReadLine()將檔案內容以String方式一行一行的讀取,
   再用BufferedWriter.write()寫入取代文字
(2)另一種是整個檔案讀進來...好像是用FileInputStream及FileOutputStream,
   但這好像只能以byte的方式,判斷每個byte的ASCII Code是否等於T,e,s,t,之後再取代為A,b,c,d,
   這方法好像比較麻煩!

以下是以第一種ReadLine的方式來做修改,但我不知道要如何判斷"Test"的位置,
以致於以下程式只能把
This is a Test process.
Please change Test to Abcd.
整個內容改為Abcd
程式如下:

import java.io.*;
import javax.swing.*;

public class testfile{
public static void main( String args[] )
{
  //Create the frame
  JFrame frame = new JFrame();
  //Show the frame
  int width = 50;
  int height = 50;
  frame.setSize(width, height);
  frame.setVisible(false);
             
  try{  
     BufferedReader in = new BufferedReader(new FileReader("D:\\testin.txt"));
     String str;
while ((str = in.readLine()) != null) {
   BufferedWriter out = new BufferedWriter(new FileWriter("D:\\testout.txt"));
          out.write("Abcd");
          out.close();
}
in.close();
     }catch(Exception ext){
     }

     String messagetest = "測試,程式修改文字檔內容結束!";
     JOptionPane.showMessageDialog(frame, messagetest);
  }
}

請問各位高手以上程式要如何修改呢?還是有別種方法可用?
能否提供一下程式範例給我呢?
                                   非常感謝!

搜尋相關Tags的文章: [ txt ] , [ readline ] , [ read ] , [ write ] , [ buffer ] , [ file ] ,
本篇文章發表於2005-03-02 14:00
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
最有價值解答

Bryan(不來ㄣ)
捐贈 VP 給 Bryan(不來ㄣ) 檢舉此回應
import java.io.*;

public class testfile{
public static void main( String args[] ) throws Exception
{
	BufferedReader in = new BufferedReader(new FileReader("testin.txt"));
	BufferedWriter out = new BufferedWriter(new FileWriter("testout.txt"));
    String str;
	while ((str = in.readLine()) != null) {
		out.write(str.replaceAll("Test","Abcd"));
		out.newLine();
	}
	out.close();
	in.close();
}
}

本篇文章回覆於2005-03-02 15:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿宗
檢舉此回應
太好了,謝謝囉!
本篇文章回覆於2005-03-03 14:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.