在Java InputStream中从ByteArrayInputStream转换为BufferedInputStream

在Java InputStream中从ByteArrayInputStream转换为BufferedInputStream,java,inputstream,Java,Inputstream,我有一个程序,用户在其中选择一个作为字符串传递的文件路径 现在我有了一个函数,它应该创建一个BufferedInputStream,获取该字符串并将其分配给InputStream try (final InputStream is = IOUtils.toInputStream(pathToFile) ) { ... 这里的问题是,我得到的是ByteArrayInputStream,而不是“正常”的BufferedInputStream。如果我打印变量“is” 有没有办法保证它必须是Buff

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

现在我有了一个函数,它应该创建一个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)) ) {

但是这不起作用。

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

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

对我有用。XS现在是一个BufferedInputStream。

您可以获得如下输入流

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

InputStream is=新文件InputStream(pathToFile)
BufferredInputStream
构造函数接受
InputStream
,您能在这里解释这个问题吗?为什么您的代码关心它是否接收到BufferedInputStream或ByteArrayInputStream或任何类型的InputStream?因为一般来说,它不应该这样,所以除非有一个具体的原因,否则改变代码接受“代码>输入流< /代码>。作为一个旁白,我不知道这个<代码> IouTILLS < /C>是什么,但是您可能需要考虑切换到代码> java。NiO.Frase.NeWiPvsStuts。