using System.Diagnostics;
using System.IO;
using System.Text;
namespace ShrlAlgoToolkit.Core.Assists;
public static class IOAssist
{
public static void GetFilesHierarchy(string path)
{
var files = Directory.GetFiles($"{path}", "*", SearchOption.AllDirectories); //遍历所有文件夹
var list = files.Union(files).OrderBy(s => s);
}
///
/// 获取当前文件的副本或备份文件名
///
///
///
///
public static string GetUniqueFilePath(string filePath)
{
if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
{
throw new FileNotFoundException($"文件'{filePath}'不存在。");
}
var dir = Path.GetDirectoryName(filePath);
var extension = Path.GetExtension(filePath);
var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePath);
var counter = 1;
while (true)
{
var candidateFileName = $"{fileNameWithoutExtension}.{counter:D3}{extension}";
var fullPath = Path.Combine(dir, candidateFileName);
if (!File.Exists(fullPath))
{
return fullPath;
}
counter++;
}
}
public static string GetRelativePath(string fromPath, string toPath)
{
Uri uri = new(fromPath);
Uri uri2 = new(toPath);
if (uri.Scheme != uri2.Scheme)
{
return toPath;
}
var uri3 = uri.MakeRelativeUri(uri2);
var text = Uri.UnescapeDataString(uri3.ToString());
if (uri2.Scheme.Equals("file", StringComparison.InvariantCultureIgnoreCase))
{
text = text.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
}
return text;
}
///
/// 获取指定系统路径
///
///
///
public static string GetSpecialFolderDir(Environment.SpecialFolder specialFolder)
{
return Environment.GetFolderPath(specialFolder);
}
///
/// 读文件
///
/// 文件路径
///
public static string ReadFile(string path)
{
string s;
if (!File.Exists(path))
{
s = "不存在相应的目录";
}
else
{
using StreamReader f2 = new(path, Encoding.GetEncoding("gb2312"));
s = f2.ReadToEnd();
f2.Close();
}
return s;
}
///
/// 在桌面写文件
///
/// 纯文件名
/// 写入的内容
public static void WriteTxtFile(string fileName, string message)
{
var filePath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + $"\\{fileName}.txt";
File.WriteAllText(filePath, message);
Process.Start(filePath);
}
///
/// 写文件
///
/// 文件路径
/// 文件内容
public static void WriteFile(string path, string strings)
{
if (!File.Exists(path))
{
var f = File.Create(path);
f.Close();
f.Dispose();
}
using StreamWriter f2 = new(path, true, Encoding.UTF8);
f2.WriteLine(strings);
f2.Close();
}
///
/// 向文本文件中写入内容
///
/// 文件的绝对路径
/// 写入的内容
/// 编码
public static void WriteText(string filePath, string text, Encoding encoding)
{
//向文件写入内容
File.WriteAllText(filePath, text, encoding);
}
}