我已经在托管C#中完成了一种存档格式的开发,它太灵活了,不能只是一个存档。我希望将它用作文件系统。它组织良好,速度非常快,同时具有低级和高级API功能。它支持即时加密和压缩、密码保护、WindowsExplorer特定的文件元数据(例如创建/修改/访问时间和属性)、2^63-1大小的HDD等。如果可以让Windows识别和使用我的文件系统,我会为了实现它而学习VisualC++。Windows是否支持自定义文件系统?(7是必须的,其他的是可选的。)如果是,我如何制作/实现它们?如果我必须使用某些第3方库,它必须是免费的。我不想使用CallbackFileSystem,因为它不是免费的。
Windows是否提供类似POSIXstat的东西?的st_ctime字段,它给出了最后一次元数据更改的时间戳?背景:我有一些数据文件,我想检查它们是否在特定时间戳后被修改过。检查修改后的时间戳(mtime)很容易,并且会处理“正常”修改,但如果用户复制旧版本的数据文件,则修改后的时间戳将显示它们更旧。在POSIX系统上,复制旧文件会导致ctime更新,即使mtime更旧。 最佳答案 据我所知,Windows确实提供了“上次更改”字段,但我还没有找到任何用于访问它的Win32API,因此您必须使用nativeAPI。具体来说:(我还
我正在编写一个需要通用临时文件夹的程序。我正在尝试查找有关WindowsTemp文件夹的详细信息。我知道有两条路-在AppData\Local\Temp\下的每个用户目录中这可能会根据Windows版本而改变?Temp\(C:\Windows\Temp)下的系统文件夹我想知道Windows对这些中的每一个到底做了什么。如果Windows从任一位置删除文件,它会在什么时候删除?我如何/应该如何使用这些目录进行编程?编辑:实际上我有一个更大的问题——因为我的程序间接运行了某个引擎,它使用了我在临时目录中创建的文件,我需要一个不使用空白字符的临时目录在路径中。Windows上的JavaSys
NTFS文件可以有对象ID。可以使用FSCTL_SET_OBJECT_ID设置这些ID.然而,msdnarticle说:Modifyinganobjectidentifiercanresultinthelossofdatafromportionsofafile,uptoandincludingentirevolumesofdata.但它没有更详细地说明。这怎么会导致数据丢失?它是在谈论文件系统中潜在的对象ID冲突,NTFS是否以某种方式依赖它们?侧节点:在找到该段落之前,我做了一些实验,并设置了一些新创建文件的对象ID,希望我的文件系统仍然完好无损。 最佳答
我想使用Directory.Move移动目录及其所有子目录。然而,在我这样做之前,我想检查目录及其子目录中的任何文件和子文件是否正在被其他进程使用。然后,在移动之前,我想将该目录锁定到其他进程,这样我可以确定Directory.Move不会抛出任何异常。实现该目标的最佳方法是什么?我想避免逐个文件检查单个文件的使用情况,因为在软件检查文件时未使用该文件并不意味着在移动过程中不会使用它开始。 最佳答案 没有办法锁定文件夹(+子文件夹)所以你总是会得到racecondition并且不能保证不会有异常(exception)。总是有可能在检
我想提供一种方法来识别大文件何时碎片化到一定程度,并提醒用户何时应该执行碎片整理。此外,我想向他们展示一个可视化显示,展示文件实际上是如何在磁盘上分解成多个部分的。我不需要知道如何计算它的碎片化程度,或者如何进行视觉展示。我需要知道两件事:1)如何识别任何磁盘上包含任何特定给定文件片段的特定簇,以及2)如何识别该磁盘上的簇总数。我基本上需要一个包含此文件片段的所有集群的列表,以及每个集群在磁盘上的位置。大多数碎片整理实用程序都有一个可视化显示,显示文件如何分布在磁盘上。我的显示将显示一个特定文件如何拆分到磁盘的不同区域。我只需要知道如何检索必要的数据来告诉我文件的簇/扇区在磁盘上的位置
我正在读取二进制文件,这是一个示例:publicstaticbyte[]ReadFully(Streaminput){byte[]buffer=newbyte[16*1024];intread;while((read=input.Read(buffer,0,buffer.Length))>0){......}}显然缓冲区大小(16*1024)对性能有很大的作用。我读过它取决于I/O技术(SATA、SSD、SCSI等)以及文件所在分区的片段大小(我们可以在格式化期间定义分区)。但是问题来了:是否有任何公式或最佳实践来定义缓冲区大小?目前,我是根据反复试验来定义的。编辑:我已经在我的服务器
我知道的是\\.\当我们在用户模式下打开设备的符号链接(symboliclink)时使用它\??\当我们以内核模式打开设备时使用它\\?\长文件名\\UNC路径。但我想知道更多细节。您能否更明确地解释一下这些前缀。 最佳答案 http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#paths显然,根据thisarticle,\??是\Global??的缩写形式:InNTnamingconvention,\Global??canalsobecalled\??to
我使用ReadDirectoryChangesW监视指定目录并在检测到更改时更新索引结构。我使用以下代码(大致)varInfoPointer:PFileNotifyInformation;NextOffset:DWORD;...while(notTerminated)dobeginifReadDirectoryChangesW(FDirHandle,FBuffer,FBufferLength,True,FFilter,@BytesRead,@FOverlap,nil)thenbeginWaitResult:=WaitForMultipleObjects(2,@FEventArray,F
我有以下场景:1:创建一堆文件2:调用一些外部应用程序来处理所有具有不同的文件自上次快照以来的创建时间3:删除文件4:转到1事实证明,当用户创建文件、删除文件和创建同名文件时,windows不保证它会更改创建时间。我写了一个小的powershell脚本来验证这一点:ls|Remove-Item$fileListOld=@{}foreach($iin1..1000){$fname=[string]::Format("{0}.txt",$i)"tst">>$fname}ls|%{$fileListOld[$_.Name]=$_}ls|Remove-Itemforeach($iin1..10