Gay*_*Fow 5 .net c# sharpcompress
该网站主页上给出的示例代码无法编译。如何列出多部分 RAR 文件中的所有卷?
我有一个 Windows 10 文件夹,其中包含许多多部分 RAR 文件。“根”rar 及其部分需要隔离,然后移至各自的文件夹中。我可以通过创建一个文件夹并检查文件名来手动执行此操作,以便根 rar 和“part01.rar”、“part02.rar”等都位于同一目录中。
当有几十个多部分文件时,手动过程很乏味,所以我正在编写一个 C# 应用程序。到目前为止,我了解到这些多部分 RAR 文件的命名约定并不一致,这让我陷入了尴尬的境地:检查它们的文件名并通过字符串操作推断它们所属的位置。不酷。
所以我导入SharpCompress是为了科学、准确地获取文件名。其文档页面上有一个示例,它似乎完全符合我的要求。我已经围绕它包装了一个方法,现在将其作为“我尝试过的”呈现给您。
private static void GetFileNames(FileInfo rarFileInfo)
{
var archive = ArchiveFactory.Open(rarFileInfo.FullName);
foreach (var entry in archive.Entries)
{
if (!entry.IsDirectory)
{
Console.WriteLine(entry.FilePath);
}
}
}
Run Code Online (Sandbox Code Playgroud)
...并注意 VS 生成的红色文本...
它无法编译,因为无法解析“FilePath”!我是否使用了错误的框架?我在VS2013下使用.NET 4.5。从理论上讲,这里应该已经有很多问题,因为主站点上的文档示例无法编译,但实际上没有(我检查过)。
问题:如何使用 SharpCompress 来识别与给定 RAR 关联的所有卷,以便开发人员可以使用它们的名称。
注意:我还可以使用 WinRar API 将文件解压到它们自己的目录中,但这不是客户端想要的。 我稍后将实际解压它们,目的是将所有关联的卷放在各自的文件夹中。
小智 4
请注意,这是一个转移注意力的问题 您的问题似乎是文档和库不匹配
SharpCompress CodePlex 上的最新版本是 0.10.3,对于该版本(当我下载它时),您的代码和示例代码运行良好。
但是,NuGet 和 GitHub 上现有的版本是 0.12.4
在此版本中,FullPath 的 IArchiveElement 成员似乎已被删除。
该版本的文档可以在 github 上找到,并且示例已更改为:
var archive = ArchiveFactory.Open(@"C:\Code\sharpcompress\TestArchives\sharpcompress.zip");
foreach (var entry in archive.Entries)
{
if (!entry.IsDirectory)
{
Console.WriteLine(entry.Key);
entry.WriteToDirectory(@"C:\temp", ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
}
}
Run Code Online (Sandbox Code Playgroud)
看来 archive.Entries 现在是IArchiveEntry的字典(或类似的) ,并且路径用作字典的键,而不是作为IArchiveEntry本身的成员。
所以简短的答案是您应该在上面的代码中替换Entry.FullPath为。Entry.Key然而,我不清楚这如何帮助确定哪些档案需要合并在一起。
您真正想要的是找到由哪些卷组成的多部分 rar。其中涉及使用“Rar”类的特定功能,而不是上面使用的基本接口。这应该有效:
static void PrintVoulmes(string ArchivePath)
{
RarArchive openedArchive = RarArchive.Open(ArchivePath);
foreach (RarVolume vol in openedArchive.Volumes)
{
Console.WriteLine(vol.VolumeFile.FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,VolumeFile是标准的 .net FileInfo 类型。另请注意:这是使用 0.10.3 版本进行测试的,因为显然我无法获得 VS2012 的 0.12.4 版本。这里的属性名称也有可能被更改。
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |