FileInputStream到Android应用程序中的字节数组

Jer*_*Lee 14 java android

我有一个使用创建的FileInputStream Context.openFileInput().我现在想将文件转换为字节数组.

不幸的是,我无法确定所需的字节数组的大小FileInputStream.read(byte[]).该available()方法不起作用,我无法使用特定路径名创建文件以检查其长度,可能是因为非root用户无法访问该路径.

我读到了ByteArrayOutputStream,似乎动态调整字节数组大小以适应,但我无法从如何读取FileInputStream到写入ByteArrayOutputStream.

Rob*_*ond 43

这应该工作.

InputStream is = Context.openFileInput(someFileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
while ((int bytesRead = is.read(b)) != -1) {
   bos.write(b, 0, bytesRead);
}
byte[] bytes = bos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

  • @Jeremy:Robby的方法是在Java中执行此操作的标准方法.他一次读取最多1024个字节的输入......你一次读取1个字节.我建议使用他的建议. (5认同)

Moh*_*din 8

这是最简单的方法

FileInputStream fis =  openFileInput(fileName);

byte[] buffer =   new byte[(int) fis.getChannel().size()];

fis.read(buffer);
Run Code Online (Sandbox Code Playgroud)