【问题标题】:read failed: EBADF (Bad file number)读取失败:EBADF(错误文件号)
【发布时间】:2013-01-29 14:02:19
【问题描述】:

当我尝试将外部存储的一个文件复制到文件夹数据库中时,会发生此错误:

java.io.IOException:读取失败:EBADF(错误文件号)

这个错误发生在这个方法的while行

private void copiarBaseDados(InputStream input) throws IOException{
  OutputStream output = new FileOutputStream(ConfiguracoesBaseDados.BANCO_PATH + ConfiguracoesBaseDados.BANCO_NOME);
  int tamanho;
  byte[] buffer = new byte[1024];
  while ((tamanho = input.read(buffer)) > 0) 
       output.write(buffer, 0, tamanho);
  output.flush();
  output.close();
  input.close();
}

知道可能是什么问题吗?谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    在阅读之前检查您的输入(流)是否存在。

    另外看看你是否有这些权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    

    【讨论】:

    • 但是制作副本不需要读写权限。谢谢
    • 只需 WRITE_EXTENAL_STORAGE 就足够了。 “任何声明 WRITE_EXTERNAL_STORAGE 权限的应用程序都被隐式授予 READ_EXTERNAL_STORAGE 权限。”
    • 定义“阅读前存在”。 @Rodolfo 如果您的问题与此答案不同,为什么将其标记为正确?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多