C# System.UnauthorizedAccessException:访问路径';C:\…\Local\Temp\bqrcregv.eww';被拒绝

C# System.UnauthorizedAccessException:访问路径';C:\…\Local\Temp\bqrcregv.eww';被拒绝,c#,C#,我遇到了一个C#访问异常问题。以下是我的集成测试: [TestFixture] public class DirectoryTraverserTest { private string testDirectory; [SetUp] public void Setup() { testDirectory = CreateTempDirectory(); var files = new[] { "file1","file2","fi

我遇到了一个C#访问异常问题。以下是我的集成测试:

[TestFixture]
public class DirectoryTraverserTest
{
    private string testDirectory;

    [SetUp]
    public void Setup()
    {
        testDirectory = CreateTempDirectory();

        var files = new[] { "file1","file2","file3","file4"};
        CreateFiles(testDirectory, files);


        System.Console.WriteLine(testDirectory);
    }

    [TearDown]
    public void TearDown()
    {
        Directory.Delete(testDirectory, true);
    }

    [Test]
    public void testThatFilesComeBackInOrderFileOrder()
    {
        CreateFile(testDirectory, "order.mnl", "file4\nfile3\nfile2\nfile1\n");

        var result = new List<FileInfo>(new DirectoryTraverser(testDirectory));
        Assert.That(result[0].FullName, Is.EqualTo(Path.Combine(testDirectory, "file4")));
        Assert.That(result[1].FullName, Is.EqualTo(Path.Combine(testDirectory, "file3")));
        Assert.That(result[2].FullName, Is.EqualTo(Path.Combine(testDirectory, "file2")));
        Assert.That(result[3].FullName, Is.EqualTo(Path.Combine(testDirectory, "file1")));
    }

    [Test]
    public void testThatFilesComeBackInFileSystemOrder()
    {
        var result = new List<FileInfo>(new DirectoryTraverser(testDirectory));
        Assert.That(result[0].FullName, Is.EqualTo(Path.Combine(testDirectory, "file1")));
        Assert.That(result[1].FullName, Is.EqualTo(Path.Combine(testDirectory, "file2")));
        Assert.That(result[2].FullName, Is.EqualTo(Path.Combine(testDirectory, "file3")));
        Assert.That(result[3].FullName, Is.EqualTo(Path.Combine(testDirectory, "file4")));
    }

    public static string CreateTempDirectory()
    {
        var path = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
        Directory.CreateDirectory(path);
        return path;
    }

    public static void CreateFiles(string path, string[] files)
    {
        foreach (var file in files)
            CreateFile(path, file, file);
    }

    public static void CreateFile(string path, string name, string content)
    {
        using(var f = new StreamWriter(Path.Combine(path, name)))
        {
            f.Write(content);
        }
    }
}
读取四个临时文件(从文件1到文件4)似乎很困难 好的导致问题的是订单文件


我完全迷路了。有人知道可能会发生什么吗?

在我看来,您试图打开的是一个目录而不是一个文件:

File.OpenText(dirPath)

如果
dirPath
实际上是指向目录而不是文件的路径,则此操作将失败。

将目录作为
DirectoryInfo
s而不是路径字符串传递的另一个原因。
Test net.purpletube.minla.test.FileSystem.DirectoryTraverserTest.testThatFilesComeBackInOrderFileOrder'
failed: System.UnauthorizedAccessException : Access to the path 'C:...\Temp\tto2nvka.1es' is denied.
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
       at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 
       at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
       at System.IO.StreamReader..ctor(String path)
       at System.IO.File.OpenText(String path)
       FileSystem\DirectoryTraverser.cs(21,0): at net.purpletube.minla.FileSystem.DirectoryTraverser..ctor(String
dirPath)
       FileSystem\DirectoryTraverserTest.cs(36,0): at net.purpletube.minla.test.FileSystem.DirectoryTraverserTest.testThatFilesComeBackInOrderFileOrder()

1 passed, 1 failed, 0 skipped, took 0.33 seconds (NUnit 2.5.5).
File.OpenText(dirPath)