判断Java文件输入流FileInputStream中是否有内容

今天,对一个项目中一直报的异常做了调查,发现根本原因在于被处理的字符串是空的。为了及早发现错误,毕竟程序员看到在Log中打印异常是一件很蛋疼的事情,所以提前判断字符串内容,去除后面处理逻辑的执行,浪费资源。

获取的字符串是从一个文件中读取出来的,得到的是一个FileInputStream对象,所以只要判断这个FileInputStream对象即可。

而FileInputStream中存储可读取内容大小的参数在channel中,这个channel对象是FileChannel类型,可以通过FileChannel的size()方法获取大小,使用时需要捕获其IOException异常。
代码如下:

FileInputStream fis;
try{
    //fis实例化,代码略

    long size = fis.getChannel().size();
}catch(IOException e){
    e.printStackTrace();
}finally{
    if(fis != null){
        fis.close();
    }
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 Java ,您可以使用 InputStream 类的 available() 方法来检查输入是否正确打开。 例如,如果您有一个 FileInputStream 对象,可以像这样检查它是否正确打开: ``` FileInputStream inputStream = null; try { inputStream = new FileInputStream("myfile.txt"); // 检查输入是否正确打开 if (inputStream.available() > 0) { System.out.println("输入正确打开!"); } else { System.out.println("输入未正确打开!"); } } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 注意,在使用完输入后,您应该总是将其关闭,以释放资源和避免内存泄漏。上面的代码示例包含了一个 finally 块,确保在使用完输入后关闭它。 ### 回答2: 在Java,我们可以使用`InputStream`类来表示输入。要检查输入是否正确打开,我们可以通过以下步骤进行检查: 1. 使用`InputStream`的子类(如`FileInputStream`)实例化一个输入对象,并传入文件路径或其他来源作为参数。 2. 在执行输入操作之前,我们需要调用`InputStream`类的`available()`方法来检查是否有可用的字节数据。如果返回为0,则说明输入没有正确打开或者没有任何数据可读。 3. 另外,我们可以使用`InputStream`类的`markSupported()`方法来检查是否支持标记操作。如果返回为false,则说明输入不支持标记和重置操作,这可能表示输入没有正确打开或者不支持此功能。 4. 我们还可以使用try-with-resources语句来确保在完成输入操作后,输入会被正确关闭。例如: ```java try (InputStream inputStream = new FileInputStream("example.txt")) { // 执行输入操作 } catch (IOException e) { e.printStackTrace(); } ``` 在上述代码输入会在try语句块执行完毕后自动关闭,无论是否出现异常。 综上所述,通过检查输入的可用字节数量、标记支持以及使用try-with-resources语句确保输入正确关闭,我们可以判断输入是否正确打开。如果满足以上条件,我们可以安全地进行输入操作。 ### 回答3: 在Java,可以使用InputStream类和相关方法来检查输入是否正确打开。 首先,我们需要创建一个InputStream对象,通常可以通过FileInputStream或者URL类来创建。例如,我们可以使用FileInputStream来读取一个本地文件: ```java InputStream inputStream = null; try { inputStream = new FileInputStream("file.txt"); } catch (FileNotFoundException e) { System.out.println("文件不存在"); } ``` 在这个例子,我们尝试打开名为file.txt的文件,如果文件不存在,就会抛出FileNotFoundException异常。 接着,我们可以使用available()方法来检查输入大小,如果大小为0,则表示输入未正确打开。 ```java if (inputStream.available() == 0) { System.out.println("输入未正确打开"); } ``` 最后,我们可以使用markSupported()方法来检查输入是否支持mark和reset方法。如果不支持,就表示输入未正确打开。 ```java if (!inputStream.markSupported()) { System.out.println("输入不支持mark和reset方法"); } ``` 需要注意的是,上述方法只是简单地检查输入是否正确打开,并不能保证输入的完整性和正确性。如果需要更加严格的检查,可以使用其他方法,如校验和或者读取的数据来验证。 综上所述,我们可以通过使用InputStream类的相关方法来检查输入是否正确打开,包括检查输入大小和支持的方法。这些方法可以帮助我们在处理输入时及时发现问题并采取相应的处理措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值