如何以Java方式直接读/写文件(如O_DIRECT标志的效果)?
我必须直接读/写文件,没有任何缓冲。在旧的C方式中,我通过使用带有标志的open方法来做到这一点。O_DIRECT
这在Java方式中可能吗?
这是描述O_DIRECT
尝试最大程度地减少与此文件之间的 I/O 的缓存影响。通常,这会降低性能,但在特殊情况下很有用,例如当应用程序执行自己的缓存时。文件 I/O 直接在用户空间缓冲区之间完成。
更新:
这是我的代码示例,
// write
fos = new FileOutputStream(fileName);
fos.write(inputData);
fos.flush();
fos.close();
// read
fis = new FileInputStream(fileName);
int len = fis.read(outputData, offset, length);
fis.close();
背景是,我将数据(实际上是命令)写入sd卡(某种智能卡)上的文件,然后智能卡接收命令并将结果准备到同一文件。通常,我可以只从该文件中读取数据(结果),但是我得到了相同的结果,也就是说,我刚刚恢复了我的命令。这是意想不到的结果。我怀疑代码是否只是写入/读取到缓冲区和从缓冲区读取,而不是实际文件。刷新不起作用。inputData
outputData