You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统是否存在Linux中fallocate --punch-holes的等效功能?

Windows系统是否存在Linux中fallocate --punch-holes的等效功能?

当然有啦!NTFS本身就支持稀疏文件,所以实现和Linux fallocate --punch-holes完全一致的功能是完全可行的,下面给你几种实用的实现方式:

  • 使用系统自带的fsutil命令行工具(最推荐,无需额外软件)
    这是Windows官方提供的文件系统操作工具,步骤很简单:

    1. 先将目标文件标记为稀疏文件:
      fsutil sparse setflag C:\path\to\your_file.ext
      
    2. 对指定区间打孔(释放磁盘空间,同时该区域内容会被置零):
      fsutil sparse setrange C:\path\to\your_file.ext <起始偏移字节> <要打孔的长度字节>
      
      举个例子:如果要从文件的第1024字节位置开始,打一个4096字节的孔,命令就是:
      fsutil sparse setrange C:\test.txt 1024 4096
      
      执行后,这段区间的实际磁盘占用会被释放,文件逻辑大小不变,但实际占用空间会减少,和Linux的打孔效果完全一致。
  • 通过Windows API编程实现
    如果是开发者需要在程序里集成这个功能,可以调用Windows的DeviceIoControl函数,配合两个控制码:

    1. 先用FSCTL_SET_SPARSE将文件设置为稀疏模式
    2. 再用FSCTL_SET_ZERO_DATA指定要打孔的起始和结束偏移,系统会自动释放该区间对应的磁盘空间,同时将内容置零。

注意事项

  • 这个功能仅支持NTFS文件系统,FAT32、exFAT等其他文件系统不支持
  • 打孔操作会永久清除目标区间的原有数据,和Linux的fallocate --punch-holes一样,操作前请确认数据无需保留
  • 执行fsutil命令需要管理员权限或者对目标文件有足够的读写权限

备注:内容来源于stack exchange,提问作者Daffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 16:03:10