在非Windows平台上刷新文件缓冲区

时间:2015-06-05 10:23:40

标签: delphi delphi-xe8

我有一个日志记录组件,它使用TByteStream存储日志内容,TFileStream定期将它们写入磁盘。我需要确保在写入文件流后立即更新文件。到目前为止,我只知道FlushFileBuffers(),这是一个特定于Windows的函数。如何在XE8平台支持的其他平台上进行操作?

1 个答案:

答案 0 :(得分:2)

RTL无法在不关闭文件的情况下刷新文件。您必须使用特定于平台的功能。在Windows上,<script type="text/javascript" language="javascript"> var reloadTimer = null; var sURL = unescape(window.location.pathname); function setReloadTime(secs) { if (arguments.length == 1) { if (reloadTimer) clearTimeout(reloadTimer); reloadTimer = setTimeout("setReloadTime()", Math.ceil(parseFloat (secs)*1000)); } else { reloadTimer = null; location.reload(true); window.location.replace( sURL ); } } setReloadTime(); //Here was where I had 300 </script> 使用Win32 TFileStream函数打开/创建文件,因此您可以使用CreateFile()来刷新它。在其他平台上,FlushFileBuffers()使用POSIX TFileStream函数打开/创建文件,因此您可以使用POSIX open()函数来刷新它。

试试这个:

fsync()