Java替换文本文件中的行 [英] Java Replace Line In Text File

查看:121
本文介绍了Java替换文本文件中的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何替换文本文件中找到的文本行?

How do I replace a line of text found within a text file?

我有一个字符串,例如:

I have a string such as:

Do the dishes0

我想要更新它与:

Do the dishes1

(反之亦然)

我如何做到这一点?

ActionListener al = new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JCheckBox checkbox = (JCheckBox) e.getSource();
                    if (checkbox.isSelected()) {
                        System.out.println("Selected");
                        String s = checkbox.getText();
                        replaceSelected(s, "1");
                    } else {
                        System.out.println("Deselected");
                        String s = checkbox.getText();
                        replaceSelected(s, "0");
                    }
                }
            };

public static void replaceSelected(String replaceWith, String type) {

}

顺便说一句,我想只替换读取的行。不是整个文件。

By the way, I want to replace ONLY the line that was read. NOT the entire file.

推荐答案

经过测试和工作

public static void replaceSelected(String replaceWith, String type) {
    try {
        // input the file content to the StringBuffer "input"
        BufferedReader file = new BufferedReader(new FileReader("notes.txt"));
        String line;
        StringBuffer inputBuffer = new StringBuffer();

        while ((line = file.readLine()) != null) {
            inputBuffer.append(line);
            inputBuffer.append('\n');
        }
        String inputStr = inputBuffer.toString();

        file.close();

        System.out.println(inputStr); // check that it's inputted right

        // this if structure determines whether or not to replace "0" or "1"
        if (Integer.parseInt(type) == 0) {
            inputStr = inputStr.replace(replaceWith + "1", replaceWith + "0"); 
        }
        else if (Integer.parseInt(type) == 1) {
            inputStr = inputStr.replace(replaceWith + "0", replaceWith + "1");
        } 

        // check if the new input is right
        System.out.println("----------------------------------\n"  + inputStr);

        // write the new String with the replaced line OVER the same file
        FileOutputStream fileOut = new FileOutputStream("notes.txt");
        fileOut.write(inputStr.getBytes());
        fileOut.close();

    } catch (Exception e) {
        System.out.println("Problem reading file.");
    }
}

public static void main(String[] args) {
    replaceSelected("Do the dishes", "1");   
}






原始文本文件内容:


Original Text File Content:


菜肴0


喂狗0

清理我的房间1

Do the dishes0
Feed the dog0
Cleaned my room1

输出:


做菜0 br>
喂狗0

清理我的房间1

------------------------ ----------

做菜1

喂狗0

清理我的房间1

Do the dishes0
Feed the dog0
Cleaned my room1
----------------------------------
Do the dishes1
Feed the dog0
Cleaned my room1

新文本文件内容:


做菜1

喂狗0

清理我的房间1

Do the dishes1
Feed the dog0
Cleaned my room1






并且作为注释,如果文本文件是:


And as a note, if the text file was:


做菜1

喂狗0 br>
清理我的房间1

Do the dishes1
Feed the dog0
Cleaned my room1

您使用的方法 replaceSelected(做菜 ,1);
它不会改变文件。

and you used the method replaceSelected("Do the dishes", "1");, it would just not change the file.

这篇关于Java替换文本文件中的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆