微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用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.jb51.cc/csharp/238996.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐