限制文件/文件夹写入指定根目录以外的路径

时间:2009-11-01 11:05:49

标签: c# .net file path io

在.NET中是否有任何API允许我将某些IO操作限制到指定的路径?

例如:

  • Root Path: C:\Test\

现在我想调用这样的函数:

  • IO.Directory.CreateDirectory("../testing/",Root)

现在我希望API为我处理这种情况,并且不要创建指定目录以外的文件夹。

因此,应将其设为c:\Test\testing\而不是c:\testing\

我知道我可以手动执行此操作,但我想可能有一个我不知道的API支持这样的事情。

问题是我有一堆随机字符串,我会根据它们创建文件夹和文件,我不想写任何东西到另一个文件夹,因为其中一个字符串包含一个字符串,如“../ “

4 个答案:

答案 0 :(得分:1)

在* nix enconements中称为chroot(jailroot)。我不确定.net中是否有这样的东西,但你可以尝试谷歌chroot for .net(或jailroot for .net)。

答案 1 :(得分:0)

我找到了一个:

DirectoryInfo.CreateSubdirectory()

不是完全相同但相似,它检查给定路径是否实际上是一个子目录。

答案 2 :(得分:0)

除了使用DirectoryInfo类之外,我建议创建一个简单的扩展方法并使用Path.Combine静态方法。

// Extension Method
public static class DirectoryExtension
{
    public static void CreateDirectory(this DirectoryInfo root, string path)
    {
        if (!Directory.Exists(root.FullName))
        {
            Directory.CreateDirectory(root.FullName);
        }

        string combinedPath = Path.Combine(root.FullName, path);
        Directory.CreateDirectory(combinedPath);
    }
}

// Usage
DirectoryInfo root = new DirectoryInfo(@"c:\Test");
root.CreateDirectory("testing");
root.CreateDirectory("testing123");
root.CreateDirectory("testingabc");
root.CreateDirectory(@"abc\123");

答案 3 :(得分:0)

我不知道任何内置的.NET API可以做你想要的。除了使用Path.Combine()将字符串组合成一个完整路径然后手动检查它是否根植于您想要的位置之外,我想不出任何其他事情。