我希望能够使用备用数据流来存储那些在我建立一个数据库应用程序所引用文件的一些同步信息。
然而,每次我在网上找到的做法已经失败在这种或那种方式。 没有在Win32 API的编程经验,我不知道为什么失败正在发生。 在某些情况下,方法调用看似成功,只是没有备用流创建(即我以后不能从备用文件中读取,也可以AlternateStreamViewer看到它)。 在其他情况下的写入成功,但由于调用CreateFile()导致一个无效SafeFileHandle读取失败。
在这一点上,我只是想找到一些工作代码。 或者被告知是“雅不能从这里到那里”。 在这种情况下,我会用另一种不具吸引力的选择(例如,编码在文件名本身同步/参考信息,并希望没有人会改变文件名)。
我了解我试了一下接近请求。 但也有相当多的(我花在这个小时),我是在学习有关的产品我没试过真正的兴趣。
但是,你是对的,它会已帮助,因为它原来我用的方法之一 - 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();
}
您也可以尝试支持列表,阅读,在短短的几行代码写NTFS备用数据流,我Platform.VirtualFileSystem库。
https://github.com/platformdotnet/Platform.VirtualFileSystem/wiki https://github.com/platformdotnet/Platform.VirtualFileSystem/wiki/Alternate-Data-Streams
文章来源: Working C# Example: Writing & Reading NTFS Alternate Data Stream Under Win7 64 bit