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

前端之家收集整理的这篇文章主要介绍了使用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();
}
原文链接:https://www.f2er.com/csharp/238996.html

猜你在找的C#相关文章