用JFileChooser 将字符串比较存入一个已存在的txt文件以及新的文件,求代码

文本替换几乎是所有文本编辑器都支持的功能,但是要限制在编辑其中才可以执行该功能。本实例实现了制定文本文件的内容替换,并且不需要再编辑其中打开文本文件。
先看视图层,要有一个控件用来选择文件,一个JTextField控件显示选中文件的绝对路径,一个控件提示用户输入搜索文本,一个控件提示用户输入替换后的文本,一个标签供用户输入要搜索的文本,一个标签供用户输入替换后的文本,一个控件执行替换,一个控件用来打开修改后的文件。
对于选择文件按钮,使用类的()方法为其绑定事件,在该事件中定义()函数,在该函数体中调用选择文件的方法。
在选择文件方法中,首先创建文件选择器,使用类的()方法创建文件扩展名过滤器,再使用类的()方法设置文件选择模式为文件,通过类的()方法显示文件打开对话框,确定用户按下打开按钮,而非取消按钮后,通过类的方法获取用户选择的文件对象,使用JTextField类的setText()方法显示文件信息到文本框。
对于替换按钮,同选择文件按钮,使用类的()方法为其绑定事件,在该事件中定义()函数,在该函数体中调用替换文本的方法。
在替换文本方法中,首先使用类的方法获取要搜索的文本和要替换成的文本,若搜索文本不为空则尝试创建文件输入流和缓冲字符数组以及字符串构建器,在循环中使用类的()方法读取文件内容到字符串构建器,读取完毕后使用类的方法关闭输入流,使用类的()方法从构建器中生成字符串,并替换搜索文本,然后创建文件输出流,使用类的()方法把替换完成的字符串写入文件内,然后使用类的方法关闭输出流,然后依次捕获异常和异常,最后使用类的()方法提示用户替换完成。
对于打开文件按钮,使用类的()方法为其绑定事件,在该事件中定义()函数,在该函数体中调用打开文件的方法。
在打开文件方法中尝试使用&,并捕获IOException异常。
代码如下:
import java.awt.BorderL
public class ReplaceFileText extends JFrame {
private static final long serialVersionUID = 3793419L;
private JPanel contentP
private JTextField fileF
private JTextField searchTextF
private JTextField replaceTextF
* Launch the application.
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
ReplaceFileText frame = new ReplaceFileText();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
* Create the frame.
public ReplaceFileText() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 501, 184);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(10, 91));
contentPane.add(panel, BorderLayout.CENTER);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[] { 81, 0, 0, 66, 0 };
gbl_panel.rowHeights = new int[] { 23, 0, 0, 0, 0 };
gbl_panel.columnWeights = new double[] { 0.0, 0.0, 0.0, 1.0,
Double.MIN_VALUE };
gbl_panel.rowWeights = new double[] { 0.0, 0.0, 0.0, 0.0,
Double.MIN_VALUE };
panel.setLayout(gbl_panel);
JButton button = new JButton("选择文件");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
GridBagConstraints gbc_button = new GridBagConstraints();
gbc_button.anchor = GridBagConstraints.NORTHWEST;
gbc_button.insets = new Insets(0, 0, 5, 5);
gbc_button.gridx = 0;
gbc_button.gridy = 0;
panel.add(button, gbc_button);
fileField = new JTextField();
fileField.setEditable(false);
GridBagConstraints gbc_fileField = new GridBagConstraints();
gbc_fileField.gridwidth = 3;
gbc_fileField.insets = new Insets(0, 0, 5, 0);
gbc_fileField.fill = GridBagConstraints.HORIZONTAL;
gbc_fileField.gridx = 1;
gbc_fileField.gridy = 0;
panel.add(fileField, gbc_fileField);
fileField.setColumns(10);
JLabel label = new JLabel("搜索文本:");
GridBagConstraints gbc_label = new GridBagConstraints();
gbc_label.anchor = GridBagConstraints.EAST;
gbc_label.insets = new Insets(0, 0, 5, 5);
gbc_label.gridx = 0;
gbc_label.gridy = 1;
panel.add(label, gbc_label);
searchTextField = new JTextField();
GridBagConstraints gbc_searchTextField = new GridBagConstraints();
gbc_searchTextField.gridwidth = 3;
gbc_searchTextField.insets = new Insets(0, 0, 5, 0);
gbc_searchTextField.fill = GridBagConstraints.HORIZONTAL;
gbc_searchTextField.gridx = 1;
gbc_searchTextField.gridy = 1;
panel.add(searchTextField, gbc_searchTextField);
searchTextField.setColumns(10);
JLabel label_1 = new JLabel("替换为:");
GridBagConstraints gbc_label_1 = new GridBagConstraints();
gbc_label_1.anchor = GridBagConstraints.EAST;
gbc_label_1.insets = new Insets(0, 0, 5, 5);
gbc_label_1.gridx = 0;
gbc_label_1.gridy = 2;
panel.add(label_1, gbc_label_1);
replaceTextField = new JTextField();
GridBagConstraints gbc_replaceTextField = new GridBagConstraints();
gbc_replaceTextField.gridwidth = 3;
gbc_replaceTextField.insets = new Insets(0, 0, 5, 0);
gbc_replaceTextField.fill = GridBagConstraints.HORIZONTAL;
gbc_replaceTextField.gridx = 1;
gbc_replaceTextField.gridy = 2;
panel.add(replaceTextField, gbc_replaceTextField);
replaceTextField.setColumns(10);
JPanel panel_1 = new JPanel();
GridBagConstraints gbc_panel_1 = new GridBagConstraints();
gbc_panel_1.gridwidth = 4;
gbc_panel_1.fill = GridBagConstraints.BOTH;
gbc_panel_1.gridx = 0;
gbc_panel_1.gridy = 3;
panel.add(panel_1, gbc_panel_1);
JButton replaceButton = new JButton("替换");
replaceButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_replaceButton_actionPerformed(e);
panel_1.add(replaceButton);
JButton openfileButton = new JButton("打开文件");
openfileButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_2_actionPerformed(e);
panel_1.add(openfileButton);
* 选择文件按钮事件处理方法
* @param e
protected void do_button_actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser("./");// 创建文件选择器
// 设置文件扩展名过滤器
chooser.setFileFilter(new FileNameExtensionFilter("文本文件", "txt",
"java", "php", "html", "htm"));
// 设置文件选择模式
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
// 显示文件打开对话框
int option = chooser.showOpenDialog(this);
// 确定用户按下打开按钮,而非取消按钮
if (option != JFileChooser.APPROVE_OPTION)
// 获取用户选择的文件对象
file = chooser.getSelectedFile();
// 显示文件信息到文本框
fileField.setText(file.toString());
* 替换按钮的事件处理方法
* @param e
protected void do_replaceButton_actionPerformed(ActionEvent event) {
String searchText = searchTextField.getText();// 获取搜索文本
String replaceText = replaceTextField.getText();// 获取替换文本
if (searchText.isEmpty())
FileReader fis = new FileReader(file);// 创建文件输入流
char[] data = new char[1024];// 创建缓冲字符数组
int rn = 0;
StringBuilder sb = new StringBuilder();// 创建字符串构建器
while ((rn = fis.read(data)) & 0) {// 读取文件内容到字符串构建器
String str = String.valueOf(data, 0, rn);
sb.append(str);
fis.close();// 关闭输入流
// 从构建器中生成字符串,并替换搜索文本
String str = sb.toString().replace(searchText, replaceText);
FileWriter fout = new FileWriter(file);// 创建文件输出流
fout.write(str.toCharArray());// 把替换完成的字符串写入文件内
fout.close();// 关闭输出流
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "替换完成");
* 打开文件按钮的事件处理方法。
* @param e
protected void do_button_2_actionPerformed(ActionEvent e) {
if (file == null)
Desktop.getDesktop().edit(file);
} catch (IOException e1) {
e1.printStackTrace();
  效果如图:
Views(...) Comments()如何将TXT文件整个的读出来放到C#的一个string类型的字符串中去?
[问题点数:50分,结帖人qinfei]
如何将TXT文件整个的读出来放到C#的一个string类型的字符串中去?
[问题点数:50分,结帖人qinfei]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。用java写一个程序,多个txt文件中统计字符串出现的次数进行排序,并输出出现在txt文件的文件名打印出来。_百度知道
用java写一个程序,多个txt文件中统计字符串出现的次数进行排序,并输出出现在txt文件的文件名打印出来。
ip4,账号1,000
0000:txt1:
账号1 --txt1,000统计结果,账号5,ip5:
0000,账号2,000
,ip6,ip3如,ip1,账号1,账号4,账号3,000
提问者采纳
index+str,String str){
int count = 0:&+index+&行;在&quot.readLine();
int line = 0;&#47.close(),第&
while(tmp.printStackTrace();&#47,找到字符;记录行数
BufferedReader br = new BufferedReader(new FileReader(fileName));
String tmp =
} catch (FileNotFoundException e) {
while(index&gt, 0).readLine()!=null){
line ++;**
* fileName 要查找的文本.indexOf(str.indexOf(+line+&=0){
br.println(&列public class FindString{
} catch (IOException e) {
e.printStackTrace().length());
int index =
public int findString(String fileName,str要查找的字符串
提问者评价
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java怎样把一字符串数组写入.txt文件中,求代码,超级感谢_百度知道
java怎样把一字符串数组写入.txt文件中,求代码,超级感谢
length.getBytes());n表示换行
).println(&向文件中写入数据
out.FileOutputS\/
for(int i =0,&quot.write(' i&);;&#47.
String[] str = {&public class TestFile { public static void main(String[] args) throws Exception{
&#47.close(); /.F/import java. &#92,true):&quot,并设置文件可追加
OutputStream out = new FileOutputStream(f;}.write(str[i];
/shanghai&r'/在d盘上创建一个名为testfile的文本文件
File f = new File(&quot.txt&quot.OutputS+F关闭输出流
System.write('写入成功;beijing&quot.r\\/);guangdong&quot,&用FileOutputSteam包装文件;D;n&#39.out.separator+&xiamen&
out,&&#47!& /)
其他类似问题
为您推荐:
其他3条回答
import java.io.ObjectInputS
import java.io.ObjectOutputS
import java.io.FileInputS
import java.io.FileOutputS
public class ArrayIOTest{
public void write(){
String[] str={&a&,&1&,&b&,&c&,&d&};
ObjectOutputStream oos=
oos=new ObjectOutputStream(new FileOutputStream(&abc.txt&));
oos.writeObject(str);
catch(Exception e){
e.printStackTrace();
if(oos!=null)oos.close();
catch(Exception e){
e.printStackTrace();
public void read(){
ObjectInputStream ois=
ois=new ObjectInputStream(new FileInputStream(&abc.txt&));
String[] ...
主要采用对象序列化技术:步骤如下:把字符数组所在的类实现序列化接口Serializable,新建一个字符数组对象,用writeobject(字符数组对象)写入txt文件,求代码再回复我
字符串数组的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 字符串比较 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信