Здравствуйте, я пытаюсь создать файл каталога с текстовым документом внутри моего первого исполняемого файла приложения Windows Forms, но здесь что-то не так:

Я хочу сделать его доступным с exe-файлом для других локальных пользовательских компьютеров:

string dir = @"C:\Users\Public\AppData\Roaming\AppFolder\document.txt"; 
if (!Directory.Exists(dir))
{
   Directory.CreateDirectory(Path.GetDirectoryName(dir));
   var stream = File.CreateText(dir);
}

Но я получил это:

Необработанное исключение типа System.IO.IOException произошло в mscorlib.dll

Дополнительная информация: Процесс не может получить доступ к файлу C: \ Users \ Public \ AppData \ Roaming \ AppFolder \ doc.txt, потому что он используется другим процессом.

0
user6716501 6 Сен 2016 в 17:20

3 ответа

Лучший ответ

Я думаю, вам нужно ввести команды, чтобы поток был доступен где-либо еще

stream.Flush();
stream.Close();
0
Tahir Bashir 6 Сен 2016 в 14:26

Попробуйте принять CreateText с помощью оператора using. Так что после использования он закрыт. File.CreateText создаст файл, но он останется открытым до тех пор, пока не будет закрыт. Попытка открыть его дважды приведет к IOException.

Этот фрагмент является частью примера по адресу https://msdn.microsoft.com/de-de/library/system.io.file.createtext (v = vs.110) .aspx

    string path = @"c:\temp\MyTest.txt";
    if (!File.Exists(path)) 
    {
        // Create a file to write to.
        using (StreamWriter sw = File.CreateText(path)) 
        {
            sw.WriteLine("Hello");
            sw.WriteLine("And");
            sw.WriteLine("Welcome");
        }   
    }
0
Ralf Bönning 6 Сен 2016 в 14:26

Для доступа / создания файла / каталога в папке AppData Roaming вам необходимо сделать следующее

 // The folder for the roaming current user 
string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

// Combine the base folder with your specific folder....
string specificFolder = Path.Combine(folder, "YourSpecificFolder");

// Check if folder exists and if not, create it
if(!Directory.Exists(specificFolder)) 
    Directory.CreateDirectory(specificFolder);
0
Sumon154 6 Сен 2016 в 15:22