我正在尝试使用FileInputStream
从我的资产中的原始文件夹读取一个File
。
这是我创建FileInputStream
的方法:
AssetManager assetManager = getAssets();
AssetFileDescriptor fileDescriptor = assetManager.openFd(fileName);
FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
接下来,我尝试从文件
中读取数据:
FileChannel fileChannel = inputStream.getChannel();
MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
IntBuffer intBuffer = mappedByteBuffer.asIntBuffer();
int[] array = new int[intBuffer.limit()];
intBuffer.get(array);
inputStream.close();
fileChannel.close();
但是这并没有起作用。由于某种原因,
fileChannel.size()
返回了一个巨大的数字。我有一个测试文件,确切地说只有13个字节长,但是fileChannel.size()
返回了1126498!除此之外,如果我忽略文件大小,直接开始读取返回的字节,它们根本不匹配我的测试文件!那么这里发生了什么?我能否解决这个问题?