簡體   English   中英

java.io.IOException:讀取失敗:EBADF(錯誤的文件描述符)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM