C# 将文件添加到Tar存档,而不复制父文件结构
我正在创建一个游戏,用户可以在其中创建自定义内容。有两个文件与每个自定义创建关联:一个.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”)之外的所有内容。为了避免以后在提取这些文件时进行任何挖掘,是否也可以删除这些文件?在测试我在编辑中发布的文件时,我发现在提取文件时,这些文件是自己出来的,不在文件夹中。这就是我一直在寻找的答案。可能与C# 将文件添加到Tar存档,而不复制父文件结构,c#,tar,sharpziplib,C#,Tar,Sharpziplib,我正在创建一个游戏,用户可以在其中创建自定义内容。有两个文件与每个自定义创建关联:一个.ogg文件和一个.xml文件。以前,我有一个包含所有相关文件的文件夹,但我想将所有相关文件包装在一个.tar文件中 使用以下代码,我可以创建一个.tar归档文件(带有自定义扩展名“.krs”): 这不会给出任何错误,但是当我使用7zip以.tar的形式打开.krs文件时,这些文件被隐藏在复制到归档文件的原始文件的所有父目录下。例如,.tar文件中“data.xml”文件的路径是“C:\Users\me\Des
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);
}
}