2011-12-12 320 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!那也是我犯的一個錯誤! 我現在自己修復了其他問題。