我想从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();
}
}
答案 0 :(得分:0)
您只需使用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 {
答案 1 :(得分:0)
你使用了错误的索引,使用&#34; g&#34;而不是&#34;我&#34;这里:
System.out.println(sentence[g]);
此外,最好和最简单的方法是:
package io;
import java.nio.file.*;;
public class ReadTextAsString
{
public static String readFileAsString(String fileName)throws Exception
{
return new String(Files.readAllBytes(Paths.get(fileName)));
}
public static void main(String[] args) throws Exception
{
String data = readFileAsString("F:\\Filip\\TextTask2.txt");
System.out.println(data); //or iterate through data if you want to print each character.
}
}