Не могу записать в файл сразу после создания - PullRequest
2 голосов
/ 09 января 2012

В следующем коде:

if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat"))
{
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}
else
{
    File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat");
    File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);
    File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);
}

по какой-то причине при первом запуске этого кода он просто создает файл, но не записывает в него, и не будет, пока я не выйду из приложения и не перезапущу его. 2-й, 3-й и т. д. пробеги работают просто отлично, это просто начальный, который винт. есть идеи? имена файлов и каталогов являются случайными, так как я просто что-то тестировал, так что вы сможете изменить их на что угодно, если вы что-то тестируете. Заранее спасибо

Ответы [ 4 ]

7 голосов
/ 09 января 2012

Вы должны поставить .Close () после File.Create

File.Create(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat").Close();

Подробнее на MSDN File.Create

или Вы можете сделать это

File.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden);

Подробнее на MSDN File.WriteAllText

6 голосов
/ 09 января 2012

File.Create возвращает ваш поток в файл, который вы, возможно, захотите закрыть, прежде чем пытаться открыть его снова.

4 голосов
/ 09 января 2012

File.AppendAllText () создаст файл, если он еще не существует, поэтому вы можете просто сделать:

File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", temp);         
File.SetAttributes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/data.dat", FileAttributes.Hidden); 

Посмотрите, поможет ли это:)

3 голосов
/ 09 января 2012

Пропустите создание файла, метод AppendAllText создаст его в любом случае, если его там нет. Я предполагаю, что file.create может оставить блокировку файла или дескриптор файла открытым.

...