gpt4 book ai didi

java - BufferedWriter不写入txt文件

转载 作者:行者123 更新时间:2023-11-30 06:15:20 24 4
gpt4 key购买 nike

有人可以帮我解决我的问题吗?我遇到的问题是 BufferedWriter 无法写入文本文件。程序编译没有错误。

    int number_of_line_to_delete_in_file = 0,number_of_all_lines = 0;

System.out.println("Trimmer - Logów pocztowych");
System.out.println("Rafał Biel v0.5");

try {
File file_reader = new File("src/log.txt");
System.out.println("Lokalizacja pliku LOG: " + file_reader.getAbsolutePath());
File file_saver = new File("src/logTemp.txt");

BufferedReader reader = new BufferedReader(new FileReader(file_reader));
BufferedWriter writer = new BufferedWriter(new FileWriter(file_saver));

LineNumberReader lnr = new LineNumberReader(reader);

String line_to_delete = "aaa";
String checked_line,line_counter;

while ((line_counter = lnr.readLine()) != null){
if(line_counter.equals(line_to_delete)) {
number_of_line_to_delete_in_file++; // sprawdzenie ilośći linii do usunięcia
}
number_of_all_lines++;// sprawdzenie ilośći wszystkich linii w pliku
}

System.out.println("W pliku znajduje się " + number_of_all_lines + " lini, w tym do usunięcia " + number_of_line_to_delete_in_file + " linii.");

while((checked_line = reader.readLine()) != null) {
String trimmed_line = checked_line.trim();
if(trimmed_line.equals(line_to_delete)) continue;
writer.write("TEST");
} // składnia odpowiadająca za usunięcie napisu z pliku.

writer.close();//zamknięcie zapisu
reader.close();//zamkniecia odczytu

boolean successful = file_saver.renameTo(file_reader);
System.out.println("Pomyślnie zakończyłem pracę " + successful);

}catch (Exception e){
System.err.println("Błąd: " + e.getMessage());
}

文件已读取,但当我尝试打开 Temp 中保存的文件时,文件为空

最佳答案

问题是您正在第一个 while 循环中读取整个文件。您的文件指针已经到达 EOF。现在您再次尝试在下一个 while 循环中读取该文件。由于指针已经位于 EOF,它将返回 null,并且您的代码永远不会进入第二个 while 循环。

下面是验证我的评论的肮脏方式。我正在重新打开您的 log.txt 文件以重置指针。它效率不高,但指出了错误。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.LineNumberReader;



public class TestMainResuse {




public static void main(String[] args) throws Exception
{
TestMainResuse t = new TestMainResuse();
t.test();

}


public void test() throws IOException{
int number_of_line_to_delete_in_file = 0,number_of_all_lines = 0;

System.out.println("Trimmer - Logów pocztowych");
System.out.println("Rafał Biel v0.5");

try {
File file_reader = new File("src/log.txt");
System.out.println("Lokalizacja pliku LOG: " + file_reader.getAbsolutePath());
File file_saver = new File("src/logTemp.txt");

BufferedReader reader = new BufferedReader(new FileReader(file_reader));
BufferedWriter writer = new BufferedWriter(new FileWriter(file_saver));

LineNumberReader lnr = new LineNumberReader(reader);

String line_to_delete = "aaa";
String checked_line,line_counter;

while ((line_counter = lnr.readLine()) != null){
if(line_counter.equals(line_to_delete)) {
number_of_line_to_delete_in_file++; // sprawdzenie ilośći linii do usunięcia
}
number_of_all_lines++;// sprawdzenie ilośći wszystkich linii w pliku
}

// System.out.println("W pliku znajduje się " + number_of_all_lines + " lini, w tym do usunięcia " + number_of_line_to_delete_in_file + " linii.");
System.out.println(number_of_all_lines);

reader.close();
reader = new BufferedReader(new FileReader(file_reader));

while((checked_line = reader.readLine()) != null) {
System.out.println("In second while loop");
String trimmed_line = checked_line.trim();
if(trimmed_line.equals(line_to_delete)) continue;
writer.write("TEST");
} // składnia odpowiadająca za usunięcie napisu z pliku.

writer.close();//zamknięcie zapisu
reader.close();//zamkniecia odczytu

boolean successful = file_saver.renameTo(file_reader);
System.out.println("Pomyślnie zakończyłem pracę " + successful);

}catch (Exception e){
e.printStackTrace();
}

}



}

关于java - BufferedWriter不写入txt文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49330821/

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