加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:13:21 所属栏目:百科 来源:网络整理
导读:我希望能够使用备用数据流来存储我正在构建的数据库应用程序中引用的文件的某些同步信息. 但是,我在网上找到的每种方法都以这种或那种方式失败了.在Win32 API编程中没有经验我不确定为什么会发生故障.在某些情况下,方法调用似乎成功,只创建了备用流(即,我以
我希望能够使用备用数据流来存储我正在构建的数据库应用程序中引用的文件的某些同步信息.

但是,我在网上找到的每种方法都以这种或那种方式失败了.在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:pathtofile.dat");
if (AlternateDataStreamExists("MyStreamName"))
{
    var alternateStream = fileInfo.GetAlternateDataStream("MyStreamName").OpenRead();
}
else
{
    var alternateStream = fileInfo.GetAlternateDataStream("MyStreamName").OpenWrite();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读