Android R 使用 FileInputStream 找不到文件?

相关代码如下

public void readFile(String filePath, String charsetName) {
    File file = new File(filePath);
    new FileInputStream(file);
    ...
}

很简单直白,在api 23 的虚拟机里运行也正常,但是在android r的虚拟机里会报如下错误

java.io.FileNotFoundException: /storage/emulated/0/AAA/Setting.gson: open failed: EFAULT (Bad address)
        at libcore.io.IoBridge.open(IoBridge.java:492)
        at java.io.FileInputStream.<init>(FileInputStream.java:159)
        ...
     Caused by: android.system.ErrnoException: open failed: EFAULT (Bad address)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:254)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:166)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7372)
        at libcore.io.IoBridge.open(IoBridge.java:478)
        at java.io.FileInputStream.<init>(FileInputStream.java:159) 
        ... 

这个程序是两个月前在同一台虚拟机上开发测试的,虚拟机里也能找到开发测试的时候生成的文件,我检查了这几项

file!=null
file.isFile()
file.exists()
file.canRead()

都没问题,那么FileInputStream 为什么会报FileNotFoundException呢?

检查文件读写权限是不是打开了