您可能不知道,但您可能会问这个问题"如何在.Net中创建稀疏文件?" 看到这个问题
简短的回答是你不能使用托管代码创建稀疏文件,但是,你可以使用本机API - 问题是稀疏文件"保持稀疏".所以,如果你想稍后回填,你可能最好不要这样做.您可以使用打开的FileStream并调用SetLength()如果您只是想避免将明确填充文本写入文件的详细信息,那么操作系统仍将使用NUL填充文件的"空"部分
public override void SetLength(
long value
)
Run Code Online (Sandbox Code Playgroud)
添加
请注意,在此实例中,该文件不一定在磁盘上进行物理扩展.但是,如果你从"尾部间隙"中读到,你将得到NUL,如果你写入差距,O/S将用NUL回填中间空间.NTFS单独维护"有效长度"和"文件长度".调用SetLength不会更改有效长度,只会更改文件长度."尾部间隙"是跨越有效长度和文件长度的文件区域.另请注意,Windows支持设置有效长度.写入尾部间隙或文件末尾也会更新有效长度.
因此,您可以通过不必立即实际扩展文件来避免性能损失,但是O/S迟早必须花时间回填NUL填充块(并将有效长度设置为新的写入位置)当你写入尾部间隙时,可能会留下较小的尾部间隙.
请注意,在扩展文件时从磁盘获取现有数据的随机块将是一个安全问题 - 想象一下使用SSN获取工资单数据.
如果Windows添加了一个新的文件系统,确切的行为可能会变得更加复杂,但可能至少与NTFS上发生的情况一样好.
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |