Просмотр исходного кода

TryReadAsString、TryReadAsLines

龙腾猫跃 5 месяцев назад
Родитель
Сommit
e4a70e2447
1 измененных файлов с 19 добавлено и 1 удалено
  1. 19 1
      Shared/Utils/FileUtils.cs

+ 19 - 1
Shared/Utils/FileUtils.cs

@@ -20,14 +20,32 @@ public static class FileUtils {
     /// <summary>
     /// 读取文件中的所有内容。
     /// </summary>
-    public static string ReadAsString(string filePath, Encoding? encoding = null)
+    public static string ReadAsString(string filePath, Encoding? encoding = null) 
         => FileUtils.ReadAsBytes(filePath).GetString(encoding);
+    /// <summary>
+    /// 读取文件中的所有内容。
+    /// 若文件不存在或读取失败,返回 <see langword="null"/>,而不是抛出异常。
+    /// </summary>
+    public static string? TryReadAsString(string filePath, Encoding? encoding = null) {
+        try {
+            if (!FileUtils.Exists(filePath)) return null;
+            return FileUtils.ReadAsBytes(filePath).GetString(encoding);
+        } catch {
+            return null;
+        }
+    }
 
     /// <summary>
     /// 读取文件中的所有内容,并按行分割。
     /// </summary>
     public static string[] ReadAsLines(string filePath, bool skipEmptyLines = false, Encoding? encoding = null)
         => FileUtils.ReadAsString(filePath, encoding).SplitLines(skipEmptyLines);
+    /// <summary>
+    /// 读取文件中的所有内容,并按行分割。
+    /// 若文件不存在或读取失败,返回空数组,而不是抛出异常。
+    /// </summary>
+    public static string[] TryReadAsLines(string filePath, bool skipEmptyLines = false, Encoding? encoding = null)
+        => FileUtils.TryReadAsString(filePath, encoding)?.SplitLines(skipEmptyLines) ?? [];
 
     #endregion