Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes()

java 复制代码
byte[] bytes;

try {
    bytes = inputStream.readAllBytes();
} catch (IOException e) {
    e.printStackTrace();

    Toast.makeText(this, "文件读取失败", Toast.LENGTH_SHORT).show();

    return;
}
  • 在 Android 开发中,执行上述代码,读取文件内容,出现如下错误信息

    java.lang.NoSuchMethodError:No virtual method readAllBytes()[B in class Ljava/io/InputStream; or its super classes (declaration of 'java.io.InputStream' appears in /apex/com.android.runtime/javalib/core-oj.jar)

问题原因
  1. InputStream 的 readAllBytes 方法是 Java 9 引入的,但直到 Android API 30(Android 11)才被加入 Android SDK

  2. 如果 minSdkVersion 低于 30,在低版本设备上运行时调用 readAllBytes 方法就会抛出 NoSuchMethodError 异常

处理策略
  • 不使用 readAllBytes 方法,改用兼容所有 Android 版本的方式,使用 ByteArrayOutputStream 手动读取
java 复制代码
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
try {
    while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, nRead);
    }
} catch (IOException e) {
    e.printStackTrace();

    Toast.makeText(this, "PDF 文件读取失败", Toast.LENGTH_SHORT).show();

    return;
}

byte[] bytes = buffer.toByteArray();
相关推荐
用户69371750013841 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
前端双越老师1 小时前
如何以前端视角(非0基础)学 Java ?
java·node.js·全栈
蝉蜕日记1 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
dear_bi_MyOnly1 小时前
【SpringBoot配置文件】
java·spring boot·后端·学习·spring·java-ee·学习方法
吐了啊取名字太难1 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
做个文艺程序员2 小时前
Linux第22篇:用Docker容器化你的Java SaaS应用:一次构建,随处运行
java·docker·容器
其美杰布-富贵-李3 小时前
Spring Boot 依赖注入说明文档
java·spring boot·python
tachibana23 小时前
hot100 数组中的第K个最大元素(215)
java·数据结构·算法·leetcode
our_times3 小时前
2026年Java开发者破局指南:Spring AI 2.0 与 Agent 开发实战
java·人工智能·spring
阿pin3 小时前
Android随笔-Retrofit
android·retrofit