TarArchiveInputStream是缓冲的还是未缓冲的输入流?

阿什什·潘乔利(Ashish Pancholi)

TarArchiveInputStream buffered还是unbuffered inputstream

InputStream inputStream = new TarArchiveInputStream(new GZIPInputStream(new BufferedInputStream(new FileInputStream(file))));

这个对象是否inputStream将整个文件内部存储到堆内存中?还是只是一个指向文件的指针,什么都没有存储到内存中?

Madhusudana Reddy Sunnapu

根据的源代码commons-compress.jar ver 1.4

当我们创建一个TarArchiveInputStream实例时会发生什么?

除了其他初始化外,创建的重要对象是TarBuffer对象的实例,对象内部具有byte[] blockBuffer默认大小(DEFAULT_RCDSIZE * 20),即512 * 20 = 10 KB。

TarBuffer对象实际上执行读取操作,并且随着我们调用TarArchiveInputStream.read(..)在内部调用readblock(方法,blockBuffer从底层tar文件读取数据

TarArchiveInputStream的对象是否将整个文件内部全部存储到堆内存中?

否。实际上,通常,只要inputStream流被缓冲,无论何时我们调用if的read方法都将尝试从应用程序缓冲中获取数据。如果存在请求的数据,它将从缓冲区中为其提供服务。如果不是,它将向OS发出信号(通过陷阱)以从OS文件高速缓存/磁盘读取数据并将其复制到其缓冲区中。(内存映射文件在不需要复制到其中的地方有所不同,但是在我们的讨论中我们不会将其混为一谈)。

即使在这种情况下也是如此TarArchiveInputStream当我们readTarArchiveInputStream调用method时,将其委托给内部,inputStream并且可以看到与上面相同的流程。

还是只是一个指向文件的指针,什么都没有存储到内存中?

在创建时,TarArchiveInputStream我们将aninputStream作为参数传递inputStream,实际上,它是一个指向文件的指针(据我所知,它是* -nix OS中的inode编号,并指向实际的inode结构)。

它确实如前所述将内容存储到内存中,但没有将整个文件存储到内存中。读入内存的数据量取决于byte[]传递给的while调用read(...)方法的大小TarArchiveInputStream

另外,如果有帮助,这是我用来查看如何使用读取条目链接TarArchiveInputStream

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

System.out是缓冲还是未缓冲?

来自分类Dev

System.out是缓冲的还是未缓冲的?

来自分类Dev

Scala 缓冲输入流读取器

来自分类Dev

从单个文件写入文件时有多个缓冲的输入流?

来自分类Dev

自定义缓冲输入流,可即时读取/拉出

来自分类Dev

从单个文件写入文件时有多个缓冲的输入流?

来自分类Dev

标准输入流 (pubsetbuf) 使用的内部缓冲区

来自分类Dev

java.io.IOException:不支持标记/重置Java音频输入流/缓冲的输入流

来自分类Dev

java.io.IOException:不支持标记/重置Java音频输入流/缓冲的输入流

来自分类Dev

自定义输入流。流缓冲区和下溢方法

来自分类Dev

如何读取输入流缓冲区中存储的字符数

来自分类Dev

从带有缓冲区的网络输入流中读取的Java(需要排除空符号)

来自分类Dev

流缓冲区大小小于输入流,但没有立即分段错误

来自分类Dev

如何读取输入流缓冲区中存储的字符数

来自分类Dev

在C语言中的scanf()过程中,数据如何从输入流流入输入缓冲区?

来自分类Dev

多个缓冲区还是单个缓冲区?

来自分类Dev

大多数电脑使用缓冲还是无缓冲的ram?

来自分类Dev

缓冲表面输入到MediaCodec

来自分类Dev

nodejs缓冲区是异步还是同步?

来自分类Dev

当StreamSubscription暂停时;是缓冲还是丢弃事件?

来自分类Dev

图形-多重缓冲:排队还是最后完成?

来自分类Dev

nodejs缓冲区是异步还是同步?

来自分类Dev

C语言中的缓冲和非缓冲输入

来自分类Dev

mysqli准备的语句缓冲的数据与未缓冲的数据性能?

来自分类Dev

为什么缓冲I / O比未缓冲I / O快

来自分类Dev

缓冲io和未缓冲io之间的区别

来自分类Dev

为什么BufferedReader不缓冲输入?

来自分类Dev

可以缓冲标准输入或文件的程序

来自分类Dev

Bash:缓冲整个标准输入,然后输出

Related 相关文章

  1. 1

    System.out是缓冲还是未缓冲?

  2. 2

    System.out是缓冲的还是未缓冲的?

  3. 3

    Scala 缓冲输入流读取器

  4. 4

    从单个文件写入文件时有多个缓冲的输入流?

  5. 5

    自定义缓冲输入流,可即时读取/拉出

  6. 6

    从单个文件写入文件时有多个缓冲的输入流?

  7. 7

    标准输入流 (pubsetbuf) 使用的内部缓冲区

  8. 8

    java.io.IOException:不支持标记/重置Java音频输入流/缓冲的输入流

  9. 9

    java.io.IOException:不支持标记/重置Java音频输入流/缓冲的输入流

  10. 10

    自定义输入流。流缓冲区和下溢方法

  11. 11

    如何读取输入流缓冲区中存储的字符数

  12. 12

    从带有缓冲区的网络输入流中读取的Java(需要排除空符号)

  13. 13

    流缓冲区大小小于输入流,但没有立即分段错误

  14. 14

    如何读取输入流缓冲区中存储的字符数

  15. 15

    在C语言中的scanf()过程中,数据如何从输入流流入输入缓冲区?

  16. 16

    多个缓冲区还是单个缓冲区?

  17. 17

    大多数电脑使用缓冲还是无缓冲的ram?

  18. 18

    缓冲表面输入到MediaCodec

  19. 19

    nodejs缓冲区是异步还是同步?

  20. 20

    当StreamSubscription暂停时;是缓冲还是丢弃事件?

  21. 21

    图形-多重缓冲:排队还是最后完成?

  22. 22

    nodejs缓冲区是异步还是同步?

  23. 23

    C语言中的缓冲和非缓冲输入

  24. 24

    mysqli准备的语句缓冲的数据与未缓冲的数据性能?

  25. 25

    为什么缓冲I / O比未缓冲I / O快

  26. 26

    缓冲io和未缓冲io之间的区别

  27. 27

    为什么BufferedReader不缓冲输入?

  28. 28

    可以缓冲标准输入或文件的程序

  29. 29

    Bash:缓冲整个标准输入,然后输出

热门标签

归档