如何将FileInputStream获取到资源文件夹中的文件
我知道如何使用AssetManager读取带有File的res/raw目录InputStream,但是对于我的特殊用例,我需要一个FileInputStream。我需要一个FileInputStream专门的原因是因为我需要FileChannel通过调用从它获取对象getChannel()。
这是我到目前为止的代码,它从中读取数据(在我的情况下为原语列表)File:
public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{    FileInputStream fis = context.openFileInput(filename);
    FileChannel ch = fis.getChannel();
    MappedByteBuffer mbuff = ch.map(MapMode.READ_ONLY, 0, ch.size());
    IntBuffer ibuff = mbuff.asIntBuffer();
    int[] array = new int[ibuff.limit()];
    ibuff.get(array);
    fis.close();
    ch.close();
    return array;
}
我曾尝试通过创建File一个Uri,但这只会导致FileNotFoundException:
Uri uri = Uri.parse("android.resource://com.example.empty/raw/file");File file = new File(uri.getPath());
FileInputStream fis = new FileInputStream(file);
有没有一种方法,我可以得到FileInputStream一个File在res/raw目录中?
回答:
您可以FileInputStream像这样获取资产中的资源:
AssetFileDescriptor fileDescriptor = assetManager.openFd(fileName);FileInputStream stream = fileDescriptor.createInputStream();
在fileName您提供的openFd() 应该是资产的相对路径,同样fileName你会提供给open()。
或者,您也可以这样创建FileInputStream:
AssetFileDescriptor assetFileDescriptor = assetManager.openFd(fileName);  FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();  
FileInputStream stream = new FileInputStream(fileDescriptor);
以上是 如何将FileInputStream获取到资源文件夹中的文件 的全部内容, 来源链接: utcz.com/qa/420334.html
