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

Java FileReader读取文件输出出现方块符号问题求助

问题原因

你遇到的方块符号是数组中未被文件内容填充的空字符(\u0000)。Java里新建char数组时,所有元素默认初始化为空字符,当你直接输出整个数组时,控制台无法解析这些空字符,就会显示成方块。而讲师的输出正常,是因为他只输出了文件实际读取到的有效字符,没有包含数组里的空字符部分。

解决办法

核心是获取实际读取的字符数,只输出有效部分,同时推荐用更规范的资源管理方式:

1. 获取实际读取长度,截取有效内容输出

reader.read(array)方法会返回实际读取到的字符数量,我们可以用这个数值来截取数组里的有效部分,避免输出空字符:

修改后的代码:

import java.io.*;

public class MSReader
{
    public static void main(String[] args)
    {
        char[] array = new char[100];
        
        try 
        {
            Reader reader = new FileReader(
                "C:\\Users\\ricky\\OneDrive\\Desktop - Lenovo Laptop\\test\\InputStreamExample.txt");
            System.out.println("Ready: " + reader.ready());
            // 保存实际读取的字符数
            int charsRead = reader.read(array);
            System.out.println("Data in the stream: ");
            // 只输出有效部分
            System.out.println(new String(array, 0, charsRead));
            
            reader.close();
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

2. 用try-with-resources自动管理流(更推荐)

Java 7及以上支持try-with-resources语法,能自动关闭流,避免手动关闭可能出现的资源泄漏问题:

import java.io.*;

public class MSReader
{
    public static void main(String[] args)
    {
        char[] array = new char[100];
        
        // 把Reader放在try()中,自动关闭
        try (Reader reader = new FileReader(
                "C:\\Users\\ricky\\OneDrive\\Desktop - Lenovo Laptop\\test\\InputStreamExample.txt"))
        {
            System.out.println("Ready: " + reader.ready());
            int charsRead = reader.read(array);
            System.out.println("Data in the stream: ");
            System.out.println(new String(array, 0, charsRead));
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

这样修改后,输出就只会显示文件里的实际内容,不会出现方块符号了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:35:04