[英]Read byte values contained in file into byte array
如果我有一个包含我想要的确切byte[]
数据的文件:
[-119, 45, 67, ...]
如何将这些值读入byte
数组? 我是否必须将它们作为String
读取,然后将这些String
值转换为byte
值?
这就是我目前正在做的事情,它有效,但很慢:
BufferedReader reader = null;
String mLine = null;
AssetManager assetManager = CustomApplication.getCustomAppContext().getAssets();
try {
reader = new BufferedReader(new InputStreamReader(assetManager.open(fileName)));
mLine = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String[] byteValues = mLine.substring(1, mLine.length() - 1).split(",");
byte[] imageBytes = new byte[byteValues.length];
for (int i = 0; i < imageBytes.length; i++) {
imageBytes[i] = Byte.valueOf(byteValues[i].trim());
}
return imageBytes;
更新:似乎对我想要完成的事情存在误解。 我的文件包含我在最后一个字节数组中想要的EXACT字节数据。 例如,我想要完全转换文件
[-119, 45, 67, ...]
到一个byte[]
调用结果
result[0] = -119
result[1] = 45
result[2] = 67
BufferedReader
用于读取char
单位。 使用BufferedInputStream
读取byte
单位并使用ByteArrayOutputStream
来帮助填充字节数组:
BufferedInputStream bis = new BufferedInputStream(assetManager.open(fileName));
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int theByte;
while((theByte = bis.read()) != -1)
{
buffer.write(theByte);
}
bis.close();
buffer.close();
byte[] result = buffer.toByteArray();
更快版本的Eng.Fouad代码:
BufferedInputStream bis = new BufferedInputStream(assetManager.open(fileName));
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int size;
byte[] buffer = new byte[4096];
while((size = bis.read(buffer)) != -1) {
buffer.write(buffer, 0, size);
}
bis.close();
buffer.close();
byte[] result = buffer.toByteArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.