查找替换文本文件内容
2011-09-09 14:35 Rollen Holt 阅读(4102) 评论(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
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
![](http://service.t.sina.com.cn/widget/qmd/1882500857/8c17d4b5/1.png)