我有一个相当直截了当的问题,但我似乎每次都要重新审视文件路径和名称的验证。所以我想知道System.IO
或框架中的其他库中是否有可用的方法可以让我的生活更轻松!?
让我们采取一个方法的例子,该方法采用文件路径和文件名,并从这些输入格式化并返回唯一的完整文件位置。
public string MakeFileNameUnique(string filePath, string fileName)
{
return filePath + Guid.NewGuid() + fileName;
}
我知道我必须执行以下操作才能以正确的格式获取路径,以便我可以附加guid和文件名:
有人可以告诉我是否有框架方法可以实现这一点(特别是 forwareslash / backslash 逻辑)可用于实现这种重复逻辑吗?
答案 0 :(得分:3)
您是否正在寻找Path.Combine
方法:
public string MakeFileNameUnique(string filePath, string fileName)
{
return Path.Combine(filePath, Guid.NewGuid().ToString(), fileName);
}
但是查看方法的名称(MakeFileNameUnique
),您是否考虑过使用Path.GenerateRandomFileName
方法?还是Path.GetTempFileName
方法?
答案 1 :(得分:1)
按照您的要求,这样做
public string MakeFileNameUnique(string filePath, string fileName)
{
// This checks for nulls, empty or not-existing folders
if(!Directory.Exists(filePath))
throw new DirectoryNotFoundException();
// This joins together the filePath (with or without backslash)
// with the Guid and the file name passed (in the same folder)
// and replace the every backslash with forward slashes
return Path.Combine(filePath, Guid.NewGuid() + "_" + fileName).Replace("\\", "/");
}
与
进行通话string result = MakeFileNameUnique(@"d:\temp", "myFile.txt");
Console.WriteLine(result);
将导致
d:/temp/9cdb8819-bdbc-4bf7-8116-aa901f45c563_myFile.txt
但是我希望知道用正斜杠替换反斜杠的原因