首页 > 解决方案 > 缓冲读取器输入到 char 数组

问题描述

我想从 txt 文件中获取输入并将所有字符放入数组中,这样我就可以对其执行一些正则表达式函数。但是当我尝试用一​​个循环读取数组来检查它时,什么也没有出现。这里有什么问题?

import java.io.BufferedReader;
import java.io.FileReader;

public class Main
{
    public static void main(String[] args)
    {
        try
        {
            Task2.doTask2();
        }catch(Exception e){};
    }
}

class Task2
{
    public static void doTask2() throws Exception
    {
        FileReader fr = new FileReader("F:\\Filip\\TextTask2.txt");
        BufferedReader br = new BufferedReader(fr);

        char[] sentence = null;
        int i;
        int j = 0;
        while((i = br.read()) != -1)
        {
            sentence[j] = (char)i;
            j++;
        }
        for(int g = 0; g < sentence.length; g++)
        {
            System.out.print(sentence[g]);
        }

        br.close();
        fr.close();
    }
}

标签: javabufferedreaderjava-io

解决方案


您可以简单地使用File.readAllBytes. 那么就没有必要创建单独的阅读器了。

String text = new String(
    Files.readAllBytes(Paths.get("F:\\Filip\\TextTask2.txt"))
);

在原始代码段中,文件读取函数抛出了一个NullPointerException因为sentence被初始化null然后取消引用:sentence[j] = (char)i;

异常被调用函数吞没了,没有打印出来,这就是为什么你在运行程序时看不到它的原因:}catch(Exception e){};

不要吞下异常,而是将调用函数声明为抛出适当的检查异常。这样,您将在运行时看到堆栈跟踪:public static void main(String[] args) throws IOException {


推荐阅读