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

如何仅用java.io.*库将文本文件加载到字符串数组(无需Scanner)

替换Scanner,仅用java.io.*读取词典文件到字符串数组

嘿,我来帮你搞定这个问题!既然你想去掉Scanner依赖,只用java.io.*包里的类来读取那个10万+单词的词典文件,其实有几种高效靠谱的方法,我给你一步步拆解:


核心思路:用BufferedReader逐行读取

词典文件通常是每行一个单词的格式,BufferedReader是java.io里专门用来高效读取文本的类,自带缓冲区,处理大文件(比如10万+单词)比Scanner效率更高,而且完全符合你的依赖要求。

完整代码示例

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class tester {
    public static void main(String[] args) throws IOException {
        // 替换成你的词典文件实际路径
        File f = new File("C:/Users/alienware14/.../your-dictionary.txt");
        List<String> wordList = new ArrayList<>();
        
        // 用try-with-resources自动关闭流,避免资源泄漏
        try (BufferedReader br = new BufferedReader(new FileReader(f))) {
            String line;
            // 逐行读取,直到文件末尾
            while ((line = br.readLine()) != null) {
                // 跳过空行,只保留有效单词
                String trimmedWord = line.trim();
                if (!trimmedWord.isEmpty()) {
                    wordList.add(trimmedWord);
                }
            }
        }
        
        // 将List转为字符串数组(如果必须用数组存储的话)
        String[] wordArray = wordList.toArray(new String[0]);
        
        // 这里可以添加后续逻辑,比如打印测试
        System.out.println("共读取到 " + wordArray.length + " 个单词");
    }
}

额外优化:指定字符编码(避免乱码)

如果你的词典文件有特殊编码(比如UTF-8),可以用InputStreamReader来明确指定编码,避免读取时出现乱码:

// 替换BufferedReader的初始化代码
try (BufferedReader br = new BufferedReader(
        new InputStreamReader(new FileInputStream(f), "UTF-8"))) {
    // 读取逻辑和上面一致
}

注:这里用字符串"UTF-8"指定编码,不需要额外导入其他包,完全依赖java.io.*。


为什么不用Scanner?

Scanner虽然方便,但它的核心是解析输入,而非高效读取大文本;而BufferedReader专注于文本读取,缓冲区机制能大幅减少磁盘IO次数,处理10万+单词的大文件时性能优势很明显。另外用try-with-resources语法能自动关闭流,不用手动写finally块,代码更简洁安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:57:15