我必须直接读/写文件,没有任何缓冲。在旧的 C 方式中,我通过使用带有O_DIRECT
标志的 open 方法来做到这一点。
这可能以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
也就是说,我刚刚得到了我的命令。这是意想不到的结果。我怀疑代码是否只是从缓冲区写入/读取,而不是真正的文件。冲洗失败。