Почему FileInfo.OpenWrite () генерирует исключения, если вызывается сразу после FileInfo.Create ()? - PullRequest
0 голосов
/ 20 апреля 2010

Я взял пример прямо из MSDN. Я хочу создать файл и сразу написать в него. Я надеялся использовать объекты FileInfo. Поэтому я создаю новый объект FileInfo, вызываю Create и затем открываю FileStream. Когда я пытаюсь открыть FileStream, я получаю исключение, сообщающее, что файл используется другим процессом. (Да меня).

Я скопировал и скопировал пример MSDN, и их код страдает от того же самого. Что я / они сделали неправильно? (P.S.Net 3.5)

Обновление: код ниже - ПРЯМО от MSDN

    string path = @"c:\MyTest.txt";
    FileInfo fi = new FileInfo(path);

    if (!fi.Exists) 
    {
        //Create the file.
        fi.Create();
    }

    // Open the stream for writing.
    using (FileStream fs = fi.OpenWrite()) 
    {
        Byte[] info = 
            new UTF8Encoding(true).GetBytes("This is to test the OpenWrite method.");

        // Add some information to the file.
        fs.Write(info, 0, info.Length);
    }

1 Ответ

2 голосов
/ 20 апреля 2010

Вы пытаетесь открыть файл, который уже открыт и заблокирован, вам нужно вызвать fi.Close () после создания, если вы собираетесь использовать его повторно, так как fi.Create () открывает поток файлов, который позволяет вам читать / напишите файл автоматически. Я считаю, что по умолчанию Create () будет просто использовать существующий файл, если он уже существует, так что вы можете просто использовать его для инициализации вашего файлового потока.

Например

// Create a reference to a file.
FileInfo fi = new FileInfo("temp.txt");
// Actually create the file.
FileStream fs = fi.Create();
// Modify the file as required, and then close the file.
fs.Close();
// Delete the file.
fi.Delete();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...