2011-12-12 319 views
-1

我有一个问题,在我的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上的文件NOT open和UAC(用户帐户控制)禁用文件进行读取操作时,也不会通过网络Dropbox或其他任何方式共享文件。这只是我刚制作并想测试的一些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; 
} 

给我上的文件nullreference例外,不知道我的结论应该来自这个错误。我承认,我非常累了ATM,可能会意识到究竟是什么在回家的路上:)

最后编辑:

见回答我自己的职位。

+3

它应该是File.ReadAllText(fileName);而不是File.ReadAllText(targetPath); ? – SGB

+0

@SGB好的。这应该是一个答案。 – Yuck

+0

我要编辑我的主帖子以显示代码作为回复。感谢您的快速回复btw :) – Mnescat

回答

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!那也是我犯的一个错误! 我现在自己修复了其他问题。