当前位置: 首页 > 面试题库 >

java.io.IOException:句柄无效

杨经武
2023-03-14
问题内容

我正在尝试自己学习编程,但仍在尝试掌握它。我收到以下错误:

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()方法时,都会出现错误,当我尝试显示默认构造函数中的字节数时,它可以很好地工作并显示101281 bytes


问题答案:

好了,在实际开始使用它之前,请先关闭构造函数inputfinally块。将结束部分从构造函数中移到完成后将被调用的位置,例如在arrayListWithNumbersmain
下方调用或单独的close方法。

我认为您也混淆finallyfinalize()不应该用于此目的的内容。



 类似资料:
  • 在书写代码与阅读代码的时候,经常会看到这一句代码: typedef void *HANDLE ,它是何方神圣呢?如何理解呢? 不理解它的时候,感觉它很神奇,知道它以后,它就是个typedef的定义,只不过是void*类型罢了,也就是HANDLE等价于void *,我们可以叫它披着句柄皮的指针(PS:指针和句柄是有区别的,在这说句废话); 对于void* 神通广大,因为它作为函数参数or函数返回值,

  • 当你用作图命令时,MATLAB用多种图形对象创建图形,例如线,文本,表面(完整列表见Graphics Objects)。所有图形对象都有控制其性能的属性。你可以在MATLAB中询问每种属性的取值并设置大部分的属性值。 每当MATLAB创建一个图形对象时,它就给该对象赋以一个标识符(称为句柄)。可以用此句柄访问对象属性。若你想作下列操作,句柄图形很有用。 修改图形外观。 通过编写能直接创建和操作对象

  • 这是我的第一个问题,所以请原谅我,如果我忘了说什么或者有什么问题的话:) 我在IIS(10)-Windows Server上设置了一个python(3.5.3)-django(2.1.5)-project。一切都很好。 只有wkhtmltopdf(0.12.5)有奇怪的行为。 当我在本地主机上运行它时,命令提示符会给我 我可以按预期在我的下载文件夹中找到生成的.pdf文件。 当我将<code>AL

  • 你可以创建任何MATLAB函数的句柄,然后用这些句柄作为函数链接的途径。函数句柄主要用来传递自变量列表给其他函数,用句柄执行函数或求值。 在MATLAB中,通过在函数名前加上符号@构造函数句柄。下面例子为SIN函数创建一个函数句柄,然后赋值给变量fhandle: fhandle = @sin; 用MATLAB的fevel函数对函数句柄求值。下面的plot_fhandle函数接收一个函数句柄和数据

  • 我使用Spring boot 1.5.7 我还没有配置CommonMultipartResolver,因为Spring Boot已经处理了文件上传。 如果我的上载超过允许的最大大小,则会抛出一个丑陋的异常。 这由我的控制器处理。 这种处理不仅复杂,而且很遗憾是特定于Tomcat的,因为SizeLimitExceededException位于包。 我如何处理这种错误情况,即无论使用哪个Servlet

  • 我正在使用Spring WebFlux webclient进行REST调用。我将连接超时配置为毫秒,相应地: 方法将为每个/响应代码返回一个空的。如何对连接超时甚至读/写超时进行相同的操作。目前,它只是抛出一个,而不处理该异常