![](/img/trans.png)
[英]Android java.io.IOException: write failed: EBADF (Bad file number)
[英]java.io.IOException: read failed: EBADF (Bad file descriptor)
我正在尝试将视频文件转换为字节数组,如下所示:
protected void onActivityResult(int requestCode, int resultCode, final @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case VIDEO_SELECT_CODE:
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
try {
FileInputStream importdb = new FileInputStream(getContentResolver().openFileDescriptor(uri, "r").getFileDescriptor());
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] bytes = new byte[100000];
while ((nRead = importdb.read(bytes, 0, bytes.length)) != -1) {
buffer.write(bytes, 0, nRead);
}
}catch(Exception e){
e.printStackTrace();
}
break;
}
}
我收到以下错误消息:
java.io.IOException:读取失败:EBADF(错误的文件描述符)
当我尝试打开一些.mp4
文件而打开其他一些文件时却没有得到它。
为什么会这样?
(这段代码是我从手机内部存储中选择视频的 Activity 的onActivityResult
方法,所以uri
是所选视频文件的 URI)
您忘记关闭由openFileDescriptor()
返回的包裹文件描述符。 除了输入/输出流之外,您还必须记住最后关闭资产/包裹文件描述符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.