就是比如说,一个AA文件夹里面有两个文件分别为①文件和②文件,那么如果直接对AA文件夹进行压缩的话,会导致压缩包里面首先是AA文件夹这个目录,双击目录后,才看到对应的两个文件,如果我要压缩包里面不出现AA这个目录,而是直接出现①文件和②文件,这个该怎么写命令。还有一种情况,比如我直接用Ctrl选择①文件和②文件后,添加压缩文件为XXX.rar,那么这种方式得到的压缩包下也是可以直接看到这两个文件的,那么这种方式的命令该如何写,求教!!!
1条回答 默认 最新
你知我知皆知 2024-08-09 23:17关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要解决这个问题,你需要使用
System.IO.File类和System.IO.Compression库来实现你的需求。以下是一个可能的解决方案:using System; using System.IO; using System.IO.Compression; class Program { static void Main(string[] args) { // 压缩文件夹 string sourceFolder = @"C:\YourSourceFolder"; string targetFolder = @"C:\YourTargetFolder"; // 解压文件夹 string srcFile = Path.Combine(sourceFolder, "AA"); string dstFile = Path.Combine(targetFolder, "AA"); // 创建一个新的压缩文件 using (var memoryStream = new MemoryStream()) { var zipArchive = new ZipArchive(memoryStream); zipArchive.CreateEntry(srcFile).SetCompressionType(ZipArchive.CompressLevel.Queued); // 将压缩文件移动到目标位置 zipArchive.Save(dstFile); } } }在这个示例中,我们首先获取源文件夹中的所有文件,并将它们存储在一个内存流中。然后,我们创建一个新的ZipArchive对象,并在其中创建一个包含指定文件的子文件夹。最后,我们将这个新创建的ZipArchive保存到目标文件夹。
如果你只想解压并查看文件而不是压缩文件,请稍作修改:
using System; using System.IO; using System.IO.Compression; class Program { static void Main(string[] args) { // 解压文件夹 string sourceFolder = @"C:\YourSourceFolder"; string targetFolder = @"C:\YourTargetFolder"; // 解压文件夹 string srcFile = Path.Combine(sourceFolder, "AA"); string dstFile = Path.Combine(targetFolder, "AA"); // 解压缩文件 using (var memoryStream = File.OpenRead(srcFile)) { using (var archive = new ZipArchive(memoryStream)) { foreach (var entry in archive.Entries) { if (!entry.FullName.EndsWith(".rar")) { Console.WriteLine(entry.FullName); } } } } } }在这个版本中,我们只读取了源文件夹中的所有文件(包括RAR文件),并将结果打印到控制台。你可以根据需要修改这个逻辑以满足你的需求。
解决 无用评论 打赏 举报