我最近有一个项目需要监控一个文件的增长,以防止文件超过其限制。有一个文件被另一个进程打开。该过程继续向该文件添加内容。我需要监控其文件大小,以确保其文件大小不超过64 GB。由于文件正在打开和写入,Get-ChildItem或[System.IO.FileInfo]无法获取其实际文件大小。此外,如果我在Windows资源管理器中刷新,文件大小将不会更新。我必须右键单击该文件并选择“属性”。然后更新文件大小。
只是想知道我如何得到实际的文件大小,如果文件被打开,并写入其他进程?
多谢了!
我最近有一个项目需要监控一个文件的增长,以防止文件超过其限制。有一个文件被另一个进程打开。该过程继续向该文件添加内容。我需要监控其文件大小,以确保其文件大小不超过64 GB。由于文件正在打开和写入,Get-ChildItem或[System.IO.FileInfo]无法获取其实际文件大小。此外,如果我在Windows资源管理器中刷新,文件大小将不会更新。我必须右键单击该文件并选择“属性”。然后更新文件大小。
只是想知道我如何得到实际的文件大小,如果文件被打开,并写入其他进程?
多谢了!
1条答案
按热度按时间lo8azlld1#
那么,您可以尝试使用System.IO.FileStream类以FileShare.ReadWrite访问权限打开该文件,这允许您读取该文件,即使它当前正在被另一个进程(C#和PowerShell)写入。
<------------------------------------------------------------>
对于C#:
<------------------------------------------------------------>
对于PowerShell:
请记住,在完成文件流后关闭它,以便其他进程可以在必要时访问该文件。也许这就是为什么您必须右键单击文件并选择属性的原因?我不知道。
我希望这能帮上忙…