using Gremlin_BlazorServer.Data.EntityClasses; using System.Diagnostics; using System.Reflection; using System.Text; namespace Gremlin_BlazorServer.Services { internal static class FileService { private static readonly Encoding defaultEncodingIfNoBom = Encoding.UTF8; public static string ReadResource(string name) { Assembly assembly = Assembly.GetExecutingAssembly(); // Format: "{Namespace}.{Folder}.{filename}.{Extension}" string resourcePath = name.StartsWith(nameof(Gremlin_BlazorServer)) ? name : assembly.GetManifestResourceNames().Single(str => str.EndsWith(name)); using Stream? stream = assembly.GetManifestResourceStream(resourcePath); if (stream == null) { return ""; } using StreamReader reader = new(stream); return reader.ReadToEnd(); } public static Encoding GetEncoding(string fileName) { Stream fileStream = File.OpenRead(fileName); using StreamReader reader = new(fileStream, defaultEncodingIfNoBom, true); _ = reader.Peek(); Encoding encoding = reader.CurrentEncoding; return encoding; } public static void WriteQuoteToTsv(string quoteContent, Quote quote) { string datei = $"{quote.Path}{Path.DirectorySeparatorChar}{quote.QuotationNumber}.tsv"; FileInfo fileInfo = new(datei); if (fileInfo.Directory == null) return; if (!fileInfo.Directory.Exists) { try { Directory.CreateDirectory(fileInfo.DirectoryName ?? ""); } catch (Exception ex) { Debug.WriteLine(ex); } } using StreamWriter writer = new(datei, false, Encoding.UTF8); { writer.WriteLine(quoteContent); } } public static void WriteTexFile(Quote quote) { string datei = $"{quote.Path}{Path.DirectorySeparatorChar}{quote.QuotationNumber}.tex"; FileInfo fileInfo = new(datei); if (fileInfo.Directory == null) return; if (!fileInfo.Directory.Exists) { _ = Directory.CreateDirectory(fileInfo.DirectoryName ?? ""); } using StreamWriter writer = new(datei, false, Encoding.UTF8); { writer.WriteLine(quote.Tex); } } } }