gpt4 book ai didi

Java: while((line = bufferedReader.readLine()) != null) 缺少 2 行

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:46 24 4
gpt4 key购买 nike

忽略传递给方法的参数。我的代码:

    public static void setEnabled(EntityPlayer p, Boolean b){
try{
FileReader fileReader = new FileReader(SLInfo.STORAGEFILE);
BufferedReader bufferedReader = new BufferedReader(fileReader);
FileWriter fileWriter = new FileWriter(SLInfo.STORAGEFILE);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
String line = null;
boolean breakearly = false;
bufferedWriter.write("HeLlo");
bufferedWriter.newLine();
bufferedWriter.write("World!");

System.out.println("GOT TO THIS FRICKIN POINT");

while((line = bufferedReader.readLine()) != null){
System.out.println(line);
Thread.sleep(2000);
}
bufferedReader.close();
bufferedWriter.close();
}catch(Exception e){e.printStackTrace();}
}

这只是输出“GOT TO THIS FRICKIN POINT”(我在愤怒中决定了这个字符串)。我不知道为什么。在我的文件中,它显示:

"Hello"
"World"

我只是不明白。

编辑:很酷。我不知道。不幸的是,这只是一个我认为可以解决我的问题的简单示例……但事实并非如此。看看我下面的代码,假设文件在第 1 行包含 p.username,它是一个字符串,为什么从不打印“got here”而总是打印“did this”。我期望它做什么:如果 p.username 在第 x 行,它会将第 x 行更改为读取“p.username booleanvalue”,如果 p.username 不在文件中的任何位置,“p.username booleanvalue”将附加到文件中的最后一行。

    public static void setEnabled(EntityPlayer p, Boolean b){
try{
FileReader fileReader = new FileReader(SLInfo.STORAGEFILE);
BufferedReader bufferedReader = new BufferedReader(fileReader);
FileWriter fileWriter = new FileWriter(SLInfo.STORAGEFILE);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
String line = null;
boolean breakearly = false;

while((line = bufferedReader.readLine()) != null) {
System.out.println(line);
if (line.contains(p.username)){
System.out.println("Got here");
bufferedWriter.write(p.username + " " + Boolean.toString(b));
bufferedWriter.newLine();
bufferedWriter.flush();
breakearly = true;
break;
}
}
bufferedWriter.flush();
System.out.println(breakearly);
if (!breakearly){
System.out.println("did this");
bufferedWriter.write(p.username + " " + Boolean.toString(b));
bufferedWriter.newLine();
bufferedWriter.flush();
}
bufferedReader.close();
bufferedWriter.close();
}catch(Exception e){e.printStackTrace();}
}

(是的,我知道我有过多的潮红)

最佳答案

这就是 BufferedWriter 中的 Buffered 的用武之地。

你写了两行,由于缓冲存储在内存中。

然后您从文件中读取,该文件尚未写入任何内容。

然后关闭编写器,刷新缓冲区,将内容添加到文件中。

要在读取前强制刷新,可以使用bufferedWriter.flush(),或者关闭它。

关于Java: while((line = bufferedReader.readLine()) != null) 缺少 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21664566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com