【问题标题】:Add Files to Tar Archive Without Copying Parent File Structure在不复制父文件结构的情况下将文件添加到 Tar 存档
【发布时间】:2018-11-17 22:56:56
【问题描述】:

我正在创建一个游戏,用户可以在其中创建自定义内容。每个自定义创建都有两个文件:一个 .ogg 文件和一个 .xml 文件。以前,我有一个包含所有关联文件的文件夹,但我想将所有关联文件包装在一个 .tar 文件中。

使用以下代码,我可以创建一个 .tar 存档(带有自定义扩展名“.krs”):

        FileInfo[] filesInDirectory = folder.GetFiles();
        string tarArchiveName = @"C:\Users\me\Desktop\UserData\songs\songName.krs";

        using (Stream targetStream = new GZipOutputStream(File.Create(tarArchiveName)))
        using (TarArchive tarArchive = TarArchive.CreateOutputTarArchive(targetStream, TarBuffer.DefaultBlockFactor))
        {
            foreach (FileInfo file in filesInDirectory)
            {
                TarEntry entry = TarEntry.CreateEntryFromFile(file.FullName);
                tarArchive.WriteEntry(entry, false);
            }
        }

这不会产生任何错误,但是当我使用 7zip 将 .krs 文件作为 .tar 打开时,这些文件将隐藏在复制到存档的原始文件的所有父目录下。例如,.tar 文件中“data.xml”文件的路径为“C:\Users\me\Desktop\UserData\songs\songName\data.xml”。

我想打开 .tar 文件,但没有顶级目录 - 只有两个文件。例如,.tar 存档中的 data.xml 文件应该只是“data.xml”。

我知道这是可以实现的,因为我可以使用 7zip 手动完成。如何使用 C# 中的 SharpZipLib 库执行此操作?我发现this 的答案似乎可以解决我的问题,但它是用 Python 编写的,这是一种我不了解的语言。

编辑:我做了更多搜索,找到了this 的答案。我尝试了这个解决方案,它带走了除了文件的第一个父目录(“.tar:parentFolder\data.xml”)之外的所有内容。是否也可以删除它以避免稍后在提取这些文件时进行任何挖掘?

【问题讨论】:

标签: c# tar sharpziplib


【解决方案1】:

在测试我在编辑中发布的answer 时,我发现在提取文件时,它们会自己出来,而不是放在文件夹中。这就是我一直在寻找的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多