Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将文件添加到Tar存档,而不复制父文件结构_C#_Tar_Sharpziplib - Fatal编程技术网

C# 将文件添加到Tar存档,而不复制父文件结构

C# 将文件添加到Tar存档,而不复制父文件结构,c#,tar,sharpziplib,C#,Tar,Sharpziplib,我正在创建一个游戏,用户可以在其中创建自定义内容。有两个文件与每个自定义创建关联:一个.ogg文件和一个.xml文件。以前,我有一个包含所有相关文件的文件夹,但我想将所有相关文件包装在一个.tar文件中 使用以下代码,我可以创建一个.tar归档文件(带有自定义扩展名“.krs”): 这不会给出任何错误,但是当我使用7zip以.tar的形式打开.krs文件时,这些文件被隐藏在复制到归档文件的原始文件的所有父目录下。例如,.tar文件中“data.xml”文件的路径是“C:\Users\me\Des

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

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

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

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

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

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

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

可能与
        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);
            }
        }