【问题标题】:Convert from ByteArrayInputStream to BufferedInputStream in Java InputStream在 Java InputStream 中从 ByteArrayInputStream 转换为 BufferedInputStream
【发布时间】:2021-04-14 10:08:14
【问题描述】:

我有一个程序,用户在其中选择作为字符串传递的文件路径。

现在我有一个函数应该创建一个 BufferedInputStream 获取该字符串并将其分配给 InputStream。

try (final InputStream is = IOUtils.toInputStream(pathToFile) ) { ... 

我的问题是我得到的是 ByteArrayInputStream 而不是“正常”的 BufferedInputStream。如果我打印变量“is”。

有没有办法保证它必须是 BufferedInputStream 或者我可以转换为 BufferedInputStream?

我也试过这个:

try (final InputStream is = new ByteArrayInputStream(pathToFile.getBytes(StandardCharsets.UTF_8)) ) {

但这没有用。

【问题讨论】:

  • InputStream is = new FileInputStream(pathToFile);
  • BufferredInputStream 构造函数采用InputStream,你能在这里解释一下问题吗?
  • 为什么您的代码会关心它是否接收到 BufferedInputStream 或 ByteArrayInputStream 或任何类型的 InputStream?因为一般情况下不应该这样,所以除非有特定原因,否则请更改您的代码以接受InputStream
  • 顺便说一句,我不知道这个IOUtils 是什么,但你可以考虑改用java.nio.Files.newInputStream

标签: java inputstream


【解决方案1】:

好的,我不知道这是否是一种解决方法,但是:

    try (final InputStream is = IOUtils.toInputStream(pathToFile) ) {
        final InputStream xs = new BufferedInputStream(is);

为我工作。 XS 现在是 BufferedInputStream。

【讨论】:

    【解决方案2】:

    你可以得到如下输入流

    try(InputStream input = new BufferedInputStream(new FileInputStream(pathToFile)))
    

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 2012-04-06
      • 2020-08-13
      • 2021-04-08
      相关资源
      最近更新 更多