You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Security示例代码编译失败:FileReader无适配EncryptedFile的构造方法

解决Jetpack Security EncryptedFile无法用FileReader读取的问题

嘿,我来帮你搞定这个编译报错!你遇到的问题核心很简单:FileReader的构造函数不接受EncryptedFile对象作为参数,它只认File、文件路径字符串或者FileDescriptor类型的输入。而EncryptedFile是Jetpack Security封装的加密文件类,得用它自带的方法来获取可读流。

错误原因分析

你的代码里直接把EncryptedFile实例传给FileReader:

new BufferedReader(new FileReader(encryptedFile))

这就触发了编译错误,因为FileReader没有匹配EncryptedFile的构造函数。

修正方案

EncryptedFile提供了openFileInput()方法,专门用来获取加密文件的输入流。我们需要用这个方法拿到InputStream,再用InputStreamReader把它包装成字符流,最后传给BufferedReader。

修正后的完整测试函数

void jetpackTest() {
    KeyGenParameterSpec keyGenParameterSpec = MasterKeys.AES256_GCM_SPEC;
    String masterKeyAlias = MasterKeys.getOrCreate(keyGenParameterSpec);

    String fileToRead = "my_sensitive_data.txt";
    EncryptedFile encryptedFile = new EncryptedFile.Builder(
            new File("private", fileToRead),
            this,
            masterKeyAlias,
            EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
    ).build();

    StringBuffer stringBuffer = new StringBuffer();
    try (BufferedReader reader =
                 new BufferedReader(new InputStreamReader(encryptedFile.openFileInput()))) {

        String line = reader.readLine();
        while (line != null) {
            stringBuffer.append(line).append('\n');
            line = reader.readLine();
        }
    } catch (IOException e) {
        // Error occurred opening encrypted file for reading.
        e.printStackTrace(); // 建议添加日志方便排查问题
    } finally {
        String contents = stringBuffer.toString();
        // 这里可以处理读取到的加密内容
    }
}

关键修改点

  • 把new FileReader(encryptedFile)替换成new InputStreamReader(encryptedFile.openFileInput())
  • 可选:在catch块里添加日志打印,方便后续排查IO异常

另外,你用的androidx.security:security-crypto:1.0.0-rc01版本是没问题的,这个版本已经稳定支持EncryptedFile的所有核心方法,不需要调整依赖版本。

内容的提问来源于stack exchange,提问作者spartygw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:52:32