63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using CalendarNotepad.Models;
|
|
using System.IO.Compression;
|
|
using System.Text;
|
|
|
|
namespace CalendarNotepad.Extends
|
|
{
|
|
/// <summary>
|
|
/// 压缩文件帮助类
|
|
/// </summary>
|
|
public static class ZipExtend
|
|
{
|
|
/// <summary>
|
|
/// 压缩文件名
|
|
/// </summary>
|
|
public static string ZipFileName { get; set; } = AppConfig.GetSaveFileName;
|
|
/// <summary>
|
|
/// 某个文件保存到压缩文件内
|
|
/// </summary>
|
|
/// <param name="str">内容</param>
|
|
/// <param name="entryName">压缩文件内容文件名</param>
|
|
public static void SaveToFile(string str,string entryName) {
|
|
using var fs = new FileStream(ZipFileName,FileMode.OpenOrCreate);
|
|
using var archive = new ZipArchive(fs,ZipArchiveMode.Create);
|
|
var entry = archive.CreateEntry(entryName);
|
|
using var es = entry.Open();
|
|
using var sw = new StreamWriter(es,Encoding.UTF8);
|
|
sw.Write(str);
|
|
sw.Flush();
|
|
}
|
|
/// <summary>
|
|
/// 读取压缩文件中文件内容
|
|
/// </summary>
|
|
/// <param name="entryName">压缩文件内容文件名</param>
|
|
/// <returns>内容</returns>
|
|
public static string GetFormFile(string entryName) {
|
|
if(!File.Exists(ZipFileName)) {
|
|
ZipFile.Open(ZipFileName,ZipArchiveMode.Create).Dispose();
|
|
return "";
|
|
}
|
|
using var zipfile = ZipFile.OpenRead(ZipFileName);
|
|
var entry = zipfile.GetEntry(entryName);
|
|
if(entry == null) {
|
|
return "";
|
|
}
|
|
var st = entry.Open();
|
|
var sr = new StreamReader(st,Encoding.UTF8);
|
|
var str = sr.ReadToEnd();
|
|
return str;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取压缩库中所有文件名
|
|
/// </summary>
|
|
/// <returns>文件名列表</returns>
|
|
public static IEnumerable<string> GetFiles() {
|
|
using var zipfile = ZipFile.OpenRead(ZipFileName);
|
|
foreach(var en in zipfile.Entries) {
|
|
yield return en.Name;
|
|
}
|
|
}
|
|
}
|
|
}
|