在C#中,可以使用System.IO.Compression命名空间中的ZipArchive类来检查压缩文件是否受密码保护,而不需要解压文件。下面是一个示例代码:
using System;
using System.IO;
using System.IO.Compression;
public class Program
{
public static void Main(string[] args)
{
string filePath = "path/to/compressed/file.zip";
string password = "password";
bool isPasswordProtected = IsFilePasswordProtected(filePath, password);
Console.WriteLine($"Is file password protected: {isPasswordProtected}");
}
public static bool IsFilePasswordProtected(string filePath, string password)
{
try
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(fileStream, ZipArchiveMode.Read))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.IsPasswordProtected)
{
// Check if the entry is password protected
if (!string.IsNullOrEmpty(password))
{
entry.ExtractToFile(Path.GetTempPath(), true);
}
return true;
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
return false;
}
}
上述代码中,IsFilePasswordProtected
方法接收压缩文件路径和密码作为参数,通过使用ZipArchive
类打开压缩文件,并遍历其中的每个条目(文件或文件夹)。如果某个条目受密码保护,则将其解压到临时目录中,并返回true
表示文件受密码保护。如果没有受密码保护的条目,则返回false
。
请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当修改和优化。
领取专属 10元无门槛券
手把手带您无忧上云