You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用FileWriter写入List<String>仅存首词,如何正确实现?

如何正确将List写入文本文件?

你生成了单词列表[the, of, value, v, key, to, given, a, k, map],尝试写入文件时遇到了两类问题:仅写入首个单词、重复写入每个单词,下面先分析问题原因,再给出正确实现。

问题原因分析

第一段FileWriter代码的错误

遍历单词的for循环中,每次写完一个单词就调用writer.close(),这会直接关闭文件输出流,后续单词无法再写入,因此仅输出了第一个单词。关闭流的操作必须放在循环之后,确保所有内容写入完成再释放资源。

第二段BufferedWriter代码的错误

嵌套了不必要的双层循环:外层遍历每个单词,内层又循环列表长度次,导致当前单词被重复写入topTenPercentlist.size()次,最终每个单词都重复出现。

正确实现方案

方案1:修正后的FileWriter写法

使用try-with-resources语法自动管理资源(无需手动关闭流),把关闭操作移到循环外:

try (FileWriter writer = new FileWriter("stopwordslist.txt")) {
    for (String word : topTenPercentlist) {
        writer.write(word + System.lineSeparator());
    }
    System.out.println("数据成功写入文本文件");
} catch (IOException e) {
    e.printStackTrace();
    System.out.println("写入文本文件失败...");
}

方案2:高效的BufferedWriter写法

BufferedWriter自带缓冲,适合大文件写入,用newLine()方法换行更清晰:

try (BufferedWriter writer = new BufferedWriter(new FileWriter("stopwordslist.txt"))) {
    for (String word : topTenPercentlist) {
        writer.write(word);
        writer.newLine();
    }
    System.out.println("数据成功写入文本文件");
} catch (IOException e) {
    e.printStackTrace();
    System.out.println("写入文本文件失败...");
}

方案3:Java 8+ 极简写法(推荐)

利用java.nio.file.Files的静态方法,一行代码完成写入,自动处理换行和资源:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;

// ...

try {
    Files.write(Paths.get("stopwordslist.txt"), topTenPercentlist, StandardCharsets.UTF_8);
    System.out.println("数据成功写入文本文件");
} catch (IOException e) {
    e.printStackTrace();
    System.out.println("写入文本文件失败...");
}

内容的提问来源于stack exchange,提问作者Bluetail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:36:23