AssetManager
を使用して_res/raw
_ディレクトリからFile
を使用してInputStream
を読み取る方法を知っていますが、私の特別なユースケースではFileInputStream
。特にFileInputStream
が必要な理由は、getChannel()
を呼び出してFileChannel
オブジェクトを取得する必要があるためです。
これは私がこれまでに持っているコードであり、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);
_
_res/raw
_ディレクトリのFileInputStream
にFile
を取得する方法はありますか?
次のように、アセット内のリソースにFileInputStream
を取得できます。
_AssetFileDescriptor fileDescriptor = assetManager.openFd(fileName);
FileInputStream stream = fileDescriptor.createInputStream();
_
openFd()
に指定するfileName
は、アセットへの相対パスである必要があります。これは、open()
に指定するfileName
と同じです。
または、次のようにFileInputStream
を作成することもできます。
_AssetFileDescriptor assetFileDescriptor = assetManager.openFd(fileName);
FileDescriptor fileDescriptor = assetFileDescriptor.getFileDescriptor();
FileInputStream stream = new FileInputStream(fileDescriptor);
_