gpt4 book ai didi

java - 在 Java 中将文件读入 byte[] 数组的优雅方法

转载 作者:IT老高 更新时间:2023-10-28 13:13:43 30 4
gpt4 key购买 nike

Possible Duplicate:
File to byte[] in Java

我想从文件中读取数据并将其解码到 Parcel。在文档中并不清楚 FileInputStream 有读取其所有内容的方法。为了实现这一点,我做了以下工作:

FileInputStream filein = context.openFileInput(FILENAME);


int read = 0;
int offset = 0;
int chunk_size = 1024;
int total_size = 0;

ArrayList<byte[]> chunks = new ArrayList<byte[]>();
chunks.add(new byte[chunk_size]);
//first I read data from file chunk by chunk
while ( (read = filein.read(chunks.get(chunks.size()-1), offset, buffer_size)) != -1) {
total_size+=read;
if (read == buffer_size) {
chunks.add(new byte[buffer_size]);
}
}
int index = 0;

// then I create big buffer
byte[] rawdata = new byte[total_size];

// then I copy data from every chunk in this buffer
for (byte [] chunk: chunks) {
for (byte bt : chunk) {
index += 0;
rawdata[index] = bt;
if (index >= total_size) break;
}
if (index>= total_size) break;
}

// and clear chunks array
chunks.clear();

// finally I can unmarshall this data to Parcel
Parcel parcel = Parcel.obtain();
parcel.unmarshall(rawdata,0,rawdata.length);

我认为这段代码看起来很难看,我的问题是:如何漂亮地将文件中的数据读入 byte[]? :)

最佳答案

很久以前:

调用其中任何一个

byte[] org.apache.commons.io.FileUtils.readFileToByteArray(File file)
byte[] org.apache.commons.io.IOUtils.toByteArray(InputStream input)

来自

http://commons.apache.org/io/

如果库对于您的 Android 应用来说太大,您可以使用 commons-io 库中的相关类

今天(Java 7+ 或 Android API 级别 26+)

幸运的是,我们现在在 nio 包中有几个方便的方法。例如:

byte[] java.nio.file.Files.readAllBytes(Path path)

Javadoc here

关于java - 在 Java 中将文件读入 byte[] 数组的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058003/

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