如何从存储在本地文件系统中的图像中获取字节[],例如EG:/sdcard/tets.png
答案 0 :(得分:3)
使用Apache commons-io库中的IOUtils.toByteArray。这是我所知道的最简单,最安全的方式。 commons-io库本身很小。
这样的事情:
FileInputStream fileStream = null;
try {
fileStream = new FileInputStream("/sdcard/tets.png");
final byte[] data = IOUtils.toByteArray(fileStream);
// Do something useful to the data
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(fileStream);
}
答案 1 :(得分:0)
试试这段代码,
public static byte[] getBytesFromFile(File file) throws IOException {
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) {
// File is too large
}
byte[] bytes = new byte[(int)length];
int offset = 0;
int numRead = 0;
while (offset < bytes.length && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) {
throw new IOException("Could not completely read file "+file.getName());
}
is.close();
return bytes;
}