查找替换文本文件内容
2011-09-09 14:35 Rollen Holt 阅读(4125) 评论(0) 收藏 举报先看看效果吧:
启动界面:
选择一个文本文件,比如笔者选择了一个,通过查看文件按钮,查看原始文件内容:
然后我打算将java替换为python
在此点击查看文件按钮查看替换之后的文件内容:
程序代码如下:
package File;
import java.awt.Desktop;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* 查找替换文本文件的内容
* */
public class ReplaceFileText extends JFrame{
JPanel panel = new JPanel();
JButton chooseButton = new JButton("浏览文件");
JTextField pathField = new JTextField(20);
JLabel searchlabel = new JLabel("搜索文本:");
JTextField searchField = new JTextField(20);
JLabel replaceLabel = new JLabel("替换为:");
JTextField replaceField = new JTextField(20);
JButton replaceButton = new JButton("替换");
JButton openButton = new JButton("打开查看文件");
File file = null; // 保存选择的文件
public ReplaceFileText(){
init();
setSize(400, 400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void init(){
panel.setLayout(new GridLayout(4, 2));
panel.add(chooseButton);
panel.add(pathField);
panel.add(searchlabel);
panel.add(searchField);
panel.add(replaceLabel);
panel.add(replaceField);
panel.add(replaceButton);
panel.add(openButton);
setContentPane(panel);
chooseButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
chooseButton_event();
}
});
replaceButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
replaceButton_event();
}
});
openButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
openButton_event();
}
});
}
/**
* 选择文件按钮事件处理
* */
public void chooseButton_event(){
JFileChooser chooser = new JFileChooser();
// 设置文件扩展名过滤器
chooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt",
"java", "py", "html"));
// 设置文件选择模式
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
// 显示文件选择对话框
int option = chooser.showOpenDialog(this);
// 确定用户按下打开按钮,而不是取消按钮
if(option != JFileChooser.APPROVE_OPTION){
return;
}
// 获取用户选择的文件
file = chooser.getSelectedFile();
// 设置文件路径
pathField.setText(file.getPath());
}
/**
* 替换按钮事件处理
* */
public void replaceButton_event(){
String searchStr = searchField.getText();
String replaceStr = replaceField.getText();
if(searchStr == null || replaceStr == null){
return;
}
try{
FileReader reader = new FileReader(file);
char[] dates = new char[1024];
int count = 0;
StringBuilder sb = new StringBuilder();
while((count = reader.read(dates)) > 0){
String str = String.valueOf(dates, 0, count);
sb.append(str);
}
reader.close();
// 从构造器中生成字符串,并替换搜索文本
String str = sb.toString().replace(searchStr, replaceStr);
FileWriter writer = new FileWriter(file);
writer.write(str.toCharArray());
writer.close();
}catch(Exception e){
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "替换完成");
}
/**
* 打开文件按钮事件处理
* */
public void openButton_event(){
Desktop desktop = Desktop.getDesktop();
if(desktop.isDesktopSupported()){
try{
desktop.open(file);
}catch(IOException e){
e.printStackTrace();
}
}
}
public static void main(String[] args){
new ReplaceFileText();
}
}
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
浙公网安备 33010602011771号