using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.Library.Basic { public static class FileUtil { public static bool DeleteIfExists(string filePath) { if (!File.Exists(filePath)) { return false; } File.Delete(filePath); return true; } public static string GetExtension(string fileNameWithExtension) { var lastDotIndex = fileNameWithExtension.LastIndexOf('.'); if (lastDotIndex < 0) { return null; } return fileNameWithExtension.Substring(lastDotIndex + 1); } public static async Task ReadAllTextAsync(string path) { using (var reader = File.OpenText(path)) { return await reader.ReadToEndAsync(); } } public static async Task ReadAllBytesAsync(string path) { using (var stream = File.Open(path, FileMode.Open)) { var result = new byte[stream.Length]; await stream.ReadAsync(result, 0, (int)stream.Length); return result; } } public static async Task ReadAllLinesAsync(string path, Encoding encoding = null, FileMode fileMode = FileMode.Open, FileAccess fileAccess = FileAccess.Read, FileShare fileShare = FileShare.Read, int bufferSize = 4096, FileOptions fileOptions = FileOptions.Asynchronous | FileOptions.SequentialScan) { if (encoding == null) { encoding = Encoding.UTF8; } var lines = new List(); using (var stream = new FileStream( path, fileMode, fileAccess, fileShare, bufferSize, fileOptions)) { using (var reader = new StreamReader(stream, encoding)) { string line; while ((line = await reader.ReadLineAsync()) != null) { lines.Add(line); } } } return lines.ToArray(); } public static short[] ReadAllShorts(string file) { short[] result = null; using (var fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) { result = new short[fs.Length / 2]; using (var reader = new BinaryReader(fs)) { int i = 0; while (i < result.Length) { result[i++] = reader.ReadInt16(); } } } return result; } public static void AppendToFileName(string val, ref string fileName) { if (fileName.IsNullOrWhitespace()) return; var dotIdx = fileName.LastIndexOf('.'); var fileNameNoExt = fileName.Substring(0, dotIdx); var ext = fileName.Substring(dotIdx); fileName= fileNameNoExt + val + ext; } } }