c# - 如何解压子目录中存在的所有 .tar.bz2 并创建所有文件的列表

标签 c#

我正在尝试递归解析目录,在子目录中查找 .tar.bz2 文件,解压并创建 tar 文件中所有文件的列表,以下是详细信息,如何完成此操作?

path = \\location\tarballfiles\

假设以下 .tar.bz2 文件存在于上述位置的“路径”中

RA900B\hw.1\cqq-tech-fw-RA900B_hw_2-DATA.3.4-00028-S-1.tar.bz2  
CQQ9888\hw.2\cqq-tech-fw-CQQ9888_hw_2-DATA.3.4-00028-S-1.tar.bz2

……

预期输出:-

RA900B\hw.1\top.bin
RA900B\hw.1\mtp.bin
CQQ9888\hw.2\test.txt
CQQ9888\hw.2\data.txt
.......

伪代码:-

for each subfolder under path(ignore any files)
    parse recursively to look for .tar.bz2 files
    untar 
    create a list of all the files

最佳答案

要在目录中查找压缩包文件,您可以使用:

string[] files = Directory.GetFiles("\\\\location\\tarballfiles\\", "*.tar.bz2", SearchOption.AllDirectories);

然后递归文件,打开它们,解压然后将 tar 的文件添加到列表中。

示例(带有一些伪代码):

var allFiles = new List<string>();
string[] files = Directory.GetFiles("\\\\location\\tarballfiles\\", "*.tar.bz2", SearchOption.AllDirectories);
foreach (var file in files)
{
    // untar
    var filesFromTar = file.untar();

    foreach (var fileNameFromTar in filesFromTar)
    {
        allFiles.Add(fileNameFromTar);
    }
}

foreach (var allFile in allFiles)
{
    Console.WriteLine(allFile);
}

关于c# - 如何解压子目录中存在的所有 .tar.bz2 并创建所有文件的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39483653/

相关文章:

c# - HttpClient,实现上传File时的进度

c# - IsAssignableFrom、IsInstanceOf 和 BaseType 测试

c# - 以行值作为列的 SQL 查询的建议

c# - Oracle DataAccess 相关 : "The invoked member is not supported in a dynamic assembly."

c# - 缺少 Xamarin Forms 预览器

c# - 大 foreach 循环越来越慢

c# - 禁用按钮时单击按钮时的工具提示

c# - 复选框的 If-Else 语句

C# XNA 鼠标位置

c# - LINQ 和 Activator.CreateInstance() 创建重复项