文件被拒绝的读取权限

时间:2011-12-12 14:59:58

标签: c# visual-studio-2008 readfile permission-denied

我在使用VS2008项目中的以下C#代码阅读大量文件时遇到问题

public void FindFiles()
{
    //Root
    targetPath = Directory.GetDirectoryRoot(Directory.GetCurrentDirectory()) + "WriteToCSVFolder";
}

public void ReadFiles()
{
    fileNameList_Original = Directory.GetFiles(targetPath);

    string defaultFileName = "file_";
    int counter = 0;

    foreach (string fileName in Directory.GetFiles(targetPath))
    {
        fullFileText_Original[counter] = File.ReadAllText(targetPath);
        //fileNameList_Original[counter]
        counter++;
    }

    counter = 0;
}

现在请考虑我只是快速勾选这个,所以我没有打扰做优化或任何事情。刚注意到当我在W7 64bit上禁用未打开和UAC(用户帐户控制)的文件执行读取操作时,也没有通过网络保管箱或其他任何内容共享它。它只是我刚制作并想要测试的一些ABC BLA FOO文件,它们位于我系统文件夹中标记为targetpath的正确目录中,并且该程序正在从正确的驱动器运行。

这只是代码中的愚蠢或者吗?

哦,是的,申请被标记为完全信任。

有什么想法吗?

编辑:

通过以下评论部分实施新想法:

更改了代码
public void ReadFiles()
{
    fileNameList_Original = Directory.GetFiles(targetPath);

    string defaultFileName = "file_";
    int counter = 0;

    foreach (string fileName in Directory.GetFiles(targetPath))
    {
        fullFileText_Original[counter] = File.ReadAllText(targetPath);
        //fileNameList_Original[counter]
        counter++;
    }

    counter = 0;
}

public void ReadFiles()
{
    //Store all files names in a string array in one go
    fileNameList_Original = Directory.GetFiles(targetPath);

    string defaultFileName = "file_";
    int counter = 0;

    foreach (string fileName in Directory.GetFiles(targetPath))
    {
        //removed the storing file names, was redundant
        //added the suggested idea to the proper array
        fullFileText_Original[counter] = File.ReadAllText(fileName);
        //fileNameList_Original[counter]
        counter++;
    }

    counter = 0;
}

在File上给我null引用异常,不知道我的结论应该来自这个错误。承认我很累,可能会在回家的路上确切地意识到它是什么:)

最终编辑:

查看我自己的帖子。

1 个答案:

答案 0 :(得分:0)

此代码工作正常。我不得不因为没有修复这个问题而被解雇......试图为未初始化的数组赋值并忽略任何可变大小.......从未发生过!

    foreach (string fileName in Directory.GetFiles(targetPath))
    {
        fileNameList_Original.Add(fileName);

        foreach (string text in File.ReadAllLines(fileName))
        {
            fullFileText_Original.Add(text);
            //fileNameList_Original[counter]
        }
    }

感谢您发现fileName而不是targetPath SGB!这也是我犯的错误! 我现在自己解决了其余的问题。