gpt4 book ai didi

Java - 文件到字节数组 - Fast One

转载 作者:行者123 更新时间:2023-12-02 10:58:45 26 4
gpt4 key购买 nike

我想将文件读入字节数组。所以,我正在使用以下方式阅读它:

    int len1 = (int)(new File(filename).length());
FileInputStream fis1 = new FileInputStream(filename);
byte buf1[] = new byte[len1];
fis1.read(buf1);

但是,它确实很慢。谁能告诉我一种非常快速的方法(可能是最好的方法)将文件读入字节数组。如果需要的话我也可以使用java库。

编辑:是否有更快的基准(包括库方法)。

最佳答案

不是很慢,至少没有办法让它更快。但这是错误的。如果文件足够大,则方法 read() 将不会返回第一次调用的所有字节。此方法返回它设法读取的字节数作为返回值。

正确的方法是循环调用该方法:

  public static void copy(InputStream input,
OutputStream output,
int bufferSize)
throws IOException {
byte[] buf = new byte[bufferSize];
int bytesRead = input.read(buf);
while (bytesRead != -1) {
output.write(buf, 0, bytesRead);
bytesRead = input.read(buf);
}
output.flush();
}

调用如下:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
copy(new FileInputStream(myfile), baos);
byte[] bytes = baos.toByteArray();

类似的东西在很多包中都实现了,例如@Andrey Borisov (+1) 提到的 FileUtils.readFileToByteArray()

编辑

我认为你的情况缓慢的原因是你创建了如此巨大的数组。你确定你真的需要它吗?尝试重新思考您的设计。我相信您不必将此文件读入数组,并且可以增量处理数据。

关于Java - 文件到字节数组 - Fast One,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11741804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com