From e59d33997d158c736ee823e05b2a0bbd95dfb95d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=85=E6=B5=A9=E4=B8=9C?= <1083092844@qq.com> Date: Wed, 9 Apr 2025 13:38:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC=E5=8F=B7?= =?UTF-8?q?=EF=BC=8C=E5=BC=B9=E5=B9=95=E6=97=A5=E5=BF=97=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BarrageGrab/Logger.cs | 28 +++++++++++++++++++++++++- BarrageGrab/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/BarrageGrab/Logger.cs b/BarrageGrab/Logger.cs index 967da2c..756883f 100644 --- a/BarrageGrab/Logger.cs +++ b/BarrageGrab/Logger.cs @@ -85,12 +85,13 @@ namespace BarrageGrab var room = AppRuntime.RoomCaches.GetCachedWebRoomInfo(msg.RoomId.ToString()); if(room == null) return; var date = DateTime.Now.ToString("yyyy年MM月dd日直播"); - dir = Path.Combine(dir, $"({room.WebRoomId}){room?.Owner?.Nickname ?? "-1"}", date); + dir = Path.Combine(dir, $"({room.WebRoomId}){room?.Owner?.Nickname ?? "-1"}", date, "场次" + msg.RoomId.ToString()); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var path = Path.Combine(dir, type + ".txt"); + path = SafePathString(path); if (!File.Exists(path)) { File.Create(path).Close(); @@ -107,6 +108,31 @@ namespace BarrageGrab } } + /// + /// 将字符串中的特殊字符转换为'?',使其安全用于文件路径 + /// + /// 输入字符串 + /// 处理后的安全字符串 + public static string SafePathString(string input) + { + //在文件系统中,以下字符通常不允许用于文件名:\ / : * ? " < > | + if (string.IsNullOrEmpty(input)) + return input; + + // 文件系统中不允许的字符 + char[] invalidChars = Path.GetInvalidFileNameChars().Concat(Path.GetInvalidPathChars()).Distinct().ToArray(); + + StringBuilder result = new StringBuilder(input.Length); + foreach (char c in input) + { + result.Append(invalidChars.Contains(c) ? '?' : c); + } + + return result.ToString(); + } + + + private static string LogText(Msg msg, PackMsgType barType) { var rinfo = AppRuntime.RoomCaches.GetCachedWebRoomInfo(msg.RoomId.ToString()); diff --git a/BarrageGrab/Properties/AssemblyInfo.cs b/BarrageGrab/Properties/AssemblyInfo.cs index 6d1e8b2..966c8a5 100644 --- a/BarrageGrab/Properties/AssemblyInfo.cs +++ b/BarrageGrab/Properties/AssemblyInfo.cs @@ -33,6 +33,6 @@ using System.Runtime.InteropServices; //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.7.7")] -[assembly: AssemblyFileVersion("2.7.7")] +[assembly: AssemblyVersion("2.7.8")] +[assembly: AssemblyFileVersion("2.7.8")] [assembly: NeutralResourcesLanguage("zh-CN")]