@noytmant

Как получить доступ к файлу?

Вижу такое впервые. В данном я имею вот такой код:
string path = @"text.txt";

        private void Create()
        {
            if (!File.Exists(path))
            {
                File.Create(path);
            }
        }

        private void Load()
        {
            string allText = File.ReadAllText(path);
        }


При запуске формы мы проверяем наличие файла, если он отсутствует - то создаём.
После метода Create вызывается метод Load
Строка принимает на себя всё содержимое этого файла, на данный момент он пуст. Но при этом я не могу его получить, так как мне выдаёт следующую ошибку - Процесс не может получить доступ к файлу "text.txt", так как этот файл используется другим процессом.
При повторном запуске программы логично что файл уже существует и метод Load работает без проблем. Получаю я эту ошибку только тогда, когда создаю файл а потом пытаюсь что то оттуда взять. В чём может быть проблема?
  • Вопрос задан
  • 377 просмотров
Решения вопроса 3
borisdenis
@borisdenis
Ленив и вреден...
File.Create(path); а закрытие файла после создания где? Поэтому он и используется другим процессом.
Ответ написан
Комментировать
Adler_lug
@Adler_lug
А так?
File.Create(path).Close();
Ответ написан
Комментировать
@rPman
Либо закрывай файл после создания, либо файл нужно создавать с указанием режима прав доступа ReadWrite
Для этого подойдет собственно конструктор FileStream
в доке какраз ниже пример:
FileStream fWrite = new FileStream("test.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.None, 8, FileOptions.None);


лучше сохранять объект FileStream для переиспользования чем каждый раз заново открывать файл да еще и отдавать вопросы синхронизации на откуп системы (это тупо медленней)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы