Java 如何在文本文件中附加多个文本

Java 如何在文本文件中附加多个文本,java,Java,我希望将“name”和“code”的结果插入log.txt文件,但如果我运行此程序,仅将name结果插入.txt文件,则无法看到name下追加的代码结果。如果我执行System.outprintlnname和System.outprintlncode,我会在控制台中打印结果,但结果不会插入到文件中。有人能告诉我我做错了什么吗 Scanner sc = new Scanner(file, "UTF-8"); BufferedReader br = n

我希望将“name”和“code”的结果插入log.txt文件,但如果我运行此程序,仅将name结果插入.txt文件,则无法看到name下追加的代码结果。如果我执行System.outprintlnname和System.outprintlncode,我会在控制台中打印结果,但结果不会插入到文件中。有人能告诉我我做错了什么吗

            Scanner sc = new Scanner(file, "UTF-8");
            BufferedReader br = new BufferedReader(new FileReader(file));
            PrintWriter out = new PrintWriter(new FileWriter("log.txt", true));

            while ((line = br.readLine()) != null) {
            if (line.contains("text1")) {
                String[] splits = line.split("=");
                String name = splits[2];
                for (int i = 0; i < name.length(); i++) {
                    out.println(name);

                }
            }

            if (line.contains("text2")) {
                String[] splits = line.split("=");
                String code = splits[2];
                for (int i = 0; i < code.length(); i++) {
                    out.println(code);

                }
            }
         out.close()            
          }

确保满足第二个if条件,即行字符串包含text2。

查看此代码。这对你有用吗

final String NAME = "name";
final String CODE = "code";

BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true));

while ((line = br.readLine()) != null) {
    String[] splits = line.split("=");
    String key = splits[0];
    String value = splits[1];

    if (key.equals(NAME) || key.equals(CODE)) {
        out.println(value);
    }
}

out.close();
您的代码中有几个问题:

您从未实际分配变量名称和代码。 在while循环中关闭PrintWriter,这意味着如果读取多行,将出现问题。
我不明白为什么这不起作用,如果你没有看到更多你正在做的事情:

BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true));

while ((line = br.readLine()) != null) {
    if (line.contains("=")) {
        if (line.contains("text1")) {
            String[] splits = line.split("=");
            if (splits.length >= 2) {
                out.println(splits[1]);
            }
        }
        if (line.contains("text2")) {
            String[] splits = line.split("=");
            if (splits.length >= 2) {
                out.println(splits[1]);
            }
        }
    }
}
out.flush();
out.close();

br到底是什么?它包含哪些行?它是否包含任何包含字符串text2的行?除此之外,您从不指定变量名称和代码。这两个值是您从br读取的行的一部分吗?我假设您从文件读取的行是name=code,其中name和code是您要写入log.txt的值,对吗?请看下面我的答案!当我为text1和text2执行System.out.println时,我会在控制台中打印文本,但没有任何内容插入到文件中,因此每个if循环中都有输出。我在线程main java.lang.ArrayIndexOutOfBoundsException中得到一个错误异常:我想这是因为拆分了[0]和[1]两者都应该是1,我也试过了,但同样的错误你读的字符串是什么样子的?它们是否总是包含一个=并且在它的左侧和右侧都有文本?你能帮我们一个忙,并张贴一个这样的一行是什么样子的例子吗?我更喜欢你的答案+1请编辑我的代码。你明白我是如何解决这个问题的吗?是的,现在它可以工作了,如果我放置变量key&value,它就可以工作了。非常感谢。但我看到的唯一问题是类别变量包含-而不是=
BufferedReader br = new BufferedReader(new FileReader(file));
PrintWriter out = new PrintWriter(new FileWriter("log.txt", true));

while ((line = br.readLine()) != null) {
    if (line.contains("=")) {
        if (line.contains("text1")) {
            String[] splits = line.split("=");
            if (splits.length >= 2) {
                out.println(splits[1]);
            }
        }
        if (line.contains("text2")) {
            String[] splits = line.split("=");
            if (splits.length >= 2) {
                out.println(splits[1]);
            }
        }
    }
}
out.flush();
out.close();