【发布时间】:2014-11-10 01:03:26
【问题描述】:
我正在尝试使用 RandomAccessFile 和 FileChannel 读取包含大量浮点/整数值的 txt 文件,但在所有使用 ByteBuffer 的对话之后,我得到的值并不相同与txt文件中的那些。这是我的做法:
RandomAccessFile mRandomFile = new RandomAccessFile(Environment.getExternalStorageDirectory() + "/Models/vertices.txt", "rw");
FileChannel mInChannel = mRandomFile.getChannel();
ByteBuffer mBuffer = ByteBuffer.allocate(181017 * 4);
mBuffer.clear();
mInChannel.read(mBuffer);
mBuffer.rewind();
FloatBuffer mFloatBUffer = mBuffer.asFloatBuffer();
mFloatBUffer.get(VERTS);
mInChannel.close();
for (int i = 0; i < 20; i++) {
Log.d("", "VALUE: " + VERTS[i]);
}
txt 文件中的值以这种方式呈现(它们以新行分隔):
-36.122300
-6.356030
-46.876744
-36.122303
-7.448818
-46.876756
-36.122303
-7.448818
81.123221
-36.122300
-6.356030
81.123209
36.817676
-6.356030
-46.876779
36.817676
-7.448818
-46.876779
-36.122303
-7.448818
我在for 中得到的值是:
VALUE: 1.0187002E-11
VALUE: 2.5930944E-9
VALUE: 6.404289E-10
VALUE: 2.5957827E-6
VALUE: 2.6255839E-6
VALUE: 8.339467E-33
VALUE: 4.1885793E-11
VALUE: 1.0740952E-5
VALUE: 1.0187002E-11
VALUE: 2.5930944E-9
VALUE: 6.513428E-10
VALUE: 1.0383363E-5
VALUE: 4.3914857E-5
VALUE: 8.339467E-33
VALUE: 4.1885793E-11
VALUE: 1.0801023E-5
VALUE: 1.0187002E-11
VALUE: 2.5930944E-9
VALUE: 6.513428E-10
VALUE: 1.0383363E-5
任何想法,建议我在这里缺少什么?
【问题讨论】:
-
它是一个文本文件,而不是一个充满二进制格式浮点数的文件。你为这项工作使用了错误的工具。
-
好的,所以问题是,我应该如何创建这个带有浮点数的二进制文件?我已经看到了一些使用 txt 文件的 RandomAccessFile 示例,这就是我以这种方式尝试此选项的原因。
标签: java android bytebuffer