我有:
public static void compress(string fileName)
{
using (FileStream inFile = File.OpenRead(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + fileName))
{
string newFileName = fileName.Remove(fileName.Length - 3) + "zip";
using (FileStream outFile = File.Create(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + newFileName))
{
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
inFile.CopyTo(Compress);
}
}
}
}
文件名例如是data.txt。压缩工作正常,但当我查看压缩文件时,有一个名为“data”的文件。 “txt”扩展名在哪里。文件名仍应具有名称“data.txt”。
我错过了什么或做错了什么?
此致 kazik
答案 0 :(得分:0)
您可能需要使用Path.GetFileNameWithoutExtension,然后附加gz扩展名。
答案 1 :(得分:0)
使用GZipStream
压缩数据时,您将为其提供字节流,而不是文件 - GZipStream
实例不知道流是否来自来自网络,内存或文件,因此无法将文件名嵌入到存档中。
但是,所有文件的内容都会在存档中正确保留。您可以使用7zip将它们提取到一个新文件中(默认情况下,给定一个令牌名称,例如data
),重命名您的文件,并且您将拥有与您开始时相同的文件。