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