В праве на чтение файла отказано - PullRequest
0 голосов
/ 12 декабря 2011

У меня проблема с чтением группы файлов с использованием следующего кода C # в моем проекте VS2008

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;
}

Теперь, пожалуйста, подумайте, я просто быстро поставил галочку, чтобы я не потрудился делать оптимизацию или еще что-нибудь,Просто заметил, что когда я выполняю действие чтения с файлами, которые НЕ открыты, и UAC (контроль учетных записей пользователей) отключен на W7 64bit, а также не делится им по сети 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;
}

TO

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 для File, не уверен, из чего следует мой выводэта ошибка.Признавая, что я довольно устал, вероятно, пойму точно, что это было на пути домой:)

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:

См. Ответы на мой собственный пост.

1 Ответ

0 голосов
/ 13 декабря 2011

Этот код работает нормально. Меня уволили за то, что я почти не исправлял это ... пытаясь присвоить значения неинициализированным массивам и игнорируя любой изменяемый размер ....... Никогда не было!

    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]
        }
    }

Спасибо, что нашли имя файла вместо targetPath SGB! Это была также ошибка, которую я сделал! Теперь я сам решил все остальные проблемы.

...