java - 缓冲读取器输入到 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();
}
}
解决方案
您可以简单地使用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 {
推荐阅读
- r - 从 2 个长度不等的列表中获取共同元素
- mongodb - 无法在 Windows 32 位操作系统中安装 MongoDB
- c# - 每个孩子运行一个单独的任务
- wordpress - 将 .php 扩展名添加到 wordpress url
- hyperledger-composer - 如何使用 @returns 注释返回资产或任何变量
- kivy - Kivy 的 ScreenManager:switch_to 似乎不像文档中指定的那样工作
- android - android 中的两次振铃状态指示和无空闲/摘机状态指示
- asp.net-core - IdentityServer4 和 .NET Core Identity 客户端不会在安全标记更改时注销
- c# - 使用 FFMPEG 转换传入的字节数组文件类型 - C# ASP.NET
- python - 由于外键,将 pandas 数据帧插入表时出错