使用C#示例:在Win7 64位下编写和读取NTFS备用数据流

我希望能够使用备用数据流来存储我正在构建的数据库应用程序中引用的文件的某些同步信息.

但是,我在网上找到的每种方法都以这种或那种方式失败了.在Win32 API编程中没有经验我不确定为什么会发生故障.在某些情况下,方法调用似乎成功,只创建了备用流(即,我以后不能从备用文件中读取,AlternateStreamViewer也不能看到它).在其他情况下,写入成功,但读取失败,因为调用CreateFile()会导致无效的SafeFileHandle.

在这一点上,我只想找到一些工作代码.或者被告知“你不能从这里到达那里”.在这种情况下,我将使用另一个不太吸引人的选项(例如,编码文件名本身的同步/参考信息,并希望没有人更改文件名).

我理解我尝试过的方法的要求.但是有很多(我花了几个小时),我真的很想学习我没有尝试过的产品.

但是,你是对的,它会有所帮助,因为事实证明我正在使用其中一种方法 – 下面提到的Trinet – 不正确.我认为问题是我还没有创建我试图保存备用流的“基础”文件.

这是我尝试的代码库的链接

> St. Croix Skipper
> DevDump
> Trinet

解决方法

我使用这个库在Windows 7 x64上取得了成功:

https://github.com/hubkey/Trinet.Core.IO.Ntfs

我找不到我的旧代码,而且我收藏的文档页面目前已经关闭了,所以如果你还有问题,我会尝试发布一些代码.

编辑:
显然它很简单:

using Trinet.Core.IO.Ntfs;

var fileInfo = new FileInfo(@"C:\path\to\file.dat");
if (AlternateDataStreamExists("MyStreamName"))
{
    var alternateStream = fileInfo.GetAlternateDataStream("MyStreamName").OpenRead();
}
else
{
    var alternateStream = fileInfo.GetAlternateDataStream("MyStreamName").OpenWrite();
}

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...