如何验证字符串提供的文件路径是否为有效的目录格式

本文关键字:是否 路径 文件 有效 格式 何验证 验证 字符串 | 更新日期: 2023-09-27 17:55:49

我在这里有一个相当直接的问题,但我似乎发现自己每次必须处理文件路径和名称的验证时都会重新审视。所以我想知道框架中的System.IO或其他库中是否有一种方法可以让我的生活更轻松!?

让我们以一个采用文件路径和文件名的方法人为示例为例,并从这些输入中格式化并返回唯一的完整文件位置。

public string MakeFileNameUnique(string filePath, string fileName)
{
    return filePath + Guid.NewGuid() + fileName;
} 

我知道我必须执行以下操作才能以正确的格式获取路径,以便我可以附加 guid 和文件名:

  • 如果文件路径为空或为空,则抛出异常
  • 如果文件路径不存在,则抛出异常
  • 如果没有有效的后缀"/",则添加一个
  • 如果它包含后缀"''",则删除并替换为"/"

有人可以告诉我是否有一个框架方法可以做到这一点(特别是forwareslash/backslash逻辑)来实现这种重复逻辑?

如何验证字符串提供的文件路径是否为有效的目录格式

您是否正在寻找Path.Combine方法:

public string MakeFileNameUnique(string filePath, string fileName)
{
    return Path.Combine(filePath, Guid.NewGuid().ToString(), fileName);
} 

但是看看你的方法的名称(MakeFileNameUnique),你有没有考虑过使用Path.GenerateRandomFileName方法?还是Path.GetTempFileName方法?

按照您的要求,这将可以

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

但是我想知道用正斜杠替换反斜杠的原因