java - 尝试替换 4000 行文本文件中的符号,结果在 Java 中只有 500 行

标签 java

我想做的是替换包含 4000 多行的文件文本中的符号,但使用下面的代码,程序结束后,它只保留 500 行。为什么这个文件会被截断?怎么解决这个问题?

这是我的代码:

ArrayList<String> arrayList = new ArrayList<>();
try (FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader)) {
    String line;

    while ((line = bufferedReader.readLine()) != null) {    
        line = line.replace("þ", "t");
        arrayList.add(line);

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
            for (String string : arrayList) {
                bw.write(string + "\n");
            }
        } catch (Exception e) {System.err.println(e);}
    }
} catch (Exception e) {e.printStackTrace();}

提前致谢!

最佳答案

new BufferedWriter(new FileWriter(file)) 清除文件。

您应该只打开它一次。您还可以读取和写入同一个文件。您应该使用不同的文件。

像这样

    try (FileReader fileReader = new FileReader(inputFile);
         BufferedReader bufferedReader = new BufferedReader(fileReader);
         BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile))) {

        String line;
        while ((line = bufferedReader.readLine()) != null) {
            line = line.replace("þ", "t");

            bw.write(line + "\n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

关于java - 尝试替换 4000 行文本文件中的符号,结果在 Java 中只有 500 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45060159/

相关文章:

java - Java 中的 AES 加密与 PHP 不同

java - 我正在尝试编写一个递归函数,该函数将返回总和(整数)的结果并采用一个参数

java - 类显示在自动完成中但无法导入 -IntelliJ

java - 将图像添加到使用 Eclipse 制作的 GUI 中

java - MapReduce 应用程序计数器输出 1

java - 使用 webdriver 在 selenium 中处理灯箱/光窗

java - 服务器和客户端之间的密码以明文形式传递

java - Java 相对于 Ruby/JRuby 的优势

java - Mongo 3.0.2 驱动程序 : how to escape dots(. )在字符串中?

java - 具有 'new' 的构造函数与使用 'this()' 的构造函数有何不同?