我正在尝试在自己的时间学习编程,我仍然试图掌握它。我收到以下错误:
java.io.IOException:句柄无效
这是我的代码
public class PrimeFinder {
private int[] prime;
FileInputStream input = null;
//default contructor uses the premade file prime.txt that has the first 10000 digits of pi
public PrimeFinder() throws IOException {
try{
input = new FileInputStream ("primes.txt");
}
finally {
if (input != null ) {
input.close();
}
}
}
//constructor with a predefined text file to use.
public PrimeFinder(String txtFile) throws IOException {
try{
input = new FileInputStream(txtFile);
}
finally {
if (input != null ) {
input.close();
}
}
}
public static void main(String[] args) throws IOException{
PrimeFinder tester = new PrimeFinder();
tester.arrayListWithNumbers();
}
}
我相信每当我调用arrayListWithNumbers()
方法时我都会收到错误,当我尝试显示默认构造函数中的字节数时,它会完美地运行并显示{{1}的计数}。
答案 0 :(得分:2)
在你真正开始使用它之前,你正在构造函数的input
块中关闭finally
。将结束部分从构造函数移动到完成后将调用的位置,例如调用arrayListWithNumbers
下方或从主调用的单独关闭方法。
我认为您将finally
与finalize()
混为一谈,您也不应将其用于此目的。