Мне нужно читать/писать файлы напрямую, без какой-либо буферизации. В старой версии C я сделал это, используя открытый метод с флагом O_DIRECT
.
Возможно ли это на Java?
Здесь O_DIRECT
description
Попробуйте минимизировать кеш-эффекты ввода-вывода в и из этого файла. В В общем, это ухудшит производительность, но полезно в специальных ситуации, например, когда приложения выполняют собственное кэширование. Файловый ввод-вывод выполняется непосредственно в/из буферов пользовательского пространства.
ОБНОВЛЕНО:
Здесь мой пример кода,
// 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
, а именно, я только что получил свою команду. Этот неожиданный результат. Я подозреваю, что код просто писал/читал в буфер и из него, а не в настоящий файл. Flush не работал.