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

使用FileInputStream读取瓦片地图文件spawn.txt时出现多余空白问题

解决FileInputStream读取地图文本时出现多余空白的问题

嘿,我一眼就看出问题出在哪了——你用FileInputStream按字节读取文本的时候,把换行符也当成普通字符塞进数组里了!这些换行符在你打印的时候就变成了多余的空白行。

问题根源

FileInputStream是面向字节的流,它会读取文件里的所有字节,包括文本行末尾的换行符(Windows系统里是\r\n两个字节,Linux/macOS是\n)。你的循环不管读到什么都往spawnWorld里存,这些换行符就混进了你的地图数组,最后用System.out.println打印每个字符时,换行符本身就会输出成空白行,自然就出现了多余空白。而且你原来的打印逻辑是每个字符都换行,这也会让输出变得零散混乱,加重了空白问题。

修复方案

改用BufferedReader来按行读取文本,它能自动处理换行符,直接给你每行的有效内容。下面是修正后的代码:

package mapInit;
import java.io.BufferedReader;
import java.io.FileReader;

public class SpawnMap {
    static char[][] spawnWorld = new char[30][30];

    public static void main(String[] args) {
        try {
            // 用BufferedReader按行读取文本,自动跳过换行符
            BufferedReader reader = new BufferedReader(new FileReader("Resources/Map/spawn.txt"));
            String line;
            int row = 0;

            // 逐行读取,直到文件结束或填满30行
            while ((line = reader.readLine()) != null && row < 30) {
                // 确保每行长度足够,避免数组越界
                if (line.length() >= 30) {
                    // 把该行前30个字符复制到对应行的数组中
                    line.getChars(0, 30, spawnWorld[row], 0);
                }
                row++;
            }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace(); // 别空吞异常,打印出来方便调试
        }

        // 按行列格式打印地图,每行打印完30个字符再换行
        for (int i = 0; i < 30; i++) {
            for (int j = 0; j < 30; j++) {
                System.out.print(spawnWorld[i][j]); // 用print避免每个字符单独换行
            }
            System.out.println(); // 每行结束后再换行
        }
    }
}

关键优化说明

  • 用BufferedReader替代FileInputStream:专门处理文本读取,自动过滤换行符,只保留每行的有效地图字符。
  • 调整打印逻辑:System.out.print()打印单个字符,每行结束后再用println()换行,还原地图的行列结构。
  • 增加异常打印:空catch会掩盖问题,打印异常能帮你快速定位文件路径错误、权限问题等潜在问题。
  • 行长度校验:避免文本行长度不足30时出现数组越界错误。

这样修改后,你再运行代码,多余的空白就会消失,地图会按正常的行列格式输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:53:59