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