相关疑难解决方法(0)

为什么使用BufferedInputStream比使用FileInputStream更快地逐字节读取文件?

我试图通过使用FileInputStream将文件读入数组,并且~800KB文件花了大约3秒来读入内存.然后我尝试了相同的代码,除了将FileInputStream包装到BufferedInputStream中,它花了大约76毫秒.为什么使用BufferedInputStream以字节逐字节读取文件,即使我仍在逐字节读取它?这是代码(代码的其余部分完全不相关).请注意,这是"快速"代码.如果你想要"慢"代码,你可以删除BufferedInputStream:

InputStream is = null;

    try {
        is = new BufferedInputStream(new FileInputStream(file));

        int[] fileArr = new int[(int) file.length()];

        for (int i = 0, temp = 0; (temp = is.read()) != -1; i++) {
            fileArr[i] = temp;
        }
Run Code Online (Sandbox Code Playgroud)

BufferedInputStream的速度提高了30多倍.远不止于此.那么,为什么会这样,并且可以使这个代码更有效(不使用任何外部库)?

java file-io inputstream fileinputstream

60
推荐指数
1
解决办法
5万
查看次数

在旧的和异国情调的JVM上,java.io.BufferedInputStream的默认缓冲区大小是多少?

我一直在研究关于java.io.BufferedInputStream和缓冲的博客文章.显然,多年来,默认情况下,从( Java ) Java 7实现的JavaDocs中明确指出,默认值从可疑的512字节增长到8192字节.我的问题还提出了一个问题:谁/什么决定默认应该是什么 - 它不像我预期的那样是黑色和白色.

我很好奇每个版本的默认缓冲区大小是什么,以及它在其他异乎寻常的JVM中可能是什么.到目前为止,我已经通过源代码,JavaDocs或针对1.0,1.1,1.4,Java 5,Java 6的Sun Bug报告以及(再次推测) Sun的Java 7 JVM 进行了跟踪.

我没有出现的是这个价值

  • Sun JDK 1.2的JVM实现
  • Sun JDK 1.3的实现
  • 任何其他实现的价值(如IBM或其他)

那么,我想知道这些价值是什么以及我在哪里找到它们的参考?

或者,如果那里的任何SOped人可能有权访问其中一个安装那个baring.如果是这样,你可以编译并运行下面的代码,然后在这里报告吗?或者,你知道吗?

import java.io.BufferedInputStream;
import java.io.InputStream;

public class BufferSizeDetector extends BufferedInputStream {
    public static void main(String[] args) {
        BufferSizeDetector bsd = new BufferSizeDetector(null);

        System.err.println(System.getProperty("java.version"));
        System.err.println(bsd.getBufferSize());
    }

    public BufferSizeDetector(InputStream in) {
        super(in);
    }

    public int getBufferSize() {
        return super.buf.length;
    }
}
Run Code Online (Sandbox Code Playgroud)

java history bufferedinputstream

17
推荐指数
2
解决办法
1万
查看次数

为什么默认的char缓冲区大小为BufferedReader 8192?

当我构造一个新的时,BufferedReader它为我提供了8192个字符的缓冲区。这背后的逻辑/原因是什么?

8192 = 2 to the power of 13
Run Code Online (Sandbox Code Playgroud)

java bufferedreader

5
推荐指数
2
解决办法
2126
查看次数