Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Создать файл. С созданием всех директорий.


Автор: iddqd 18.4.2007, 12:28
У меня есть путь к файлу, допустим: C:/hello/moto/abc.xml
Необходимо создать все директории и сам файл. Как это можно реализовать?
Как получить только директорию без пути файла (аналог дельфийской ExtractFilePath)?
И какие есть еще функции для работы с путями?

Добавлено через 2 минуты и 14 секунд
Жаль, что не могу удалить топик, разобрался.
FileInfo, DirectoryInfo.

Добавлено через 8 минут и 16 секунд
Единственный момент, что после:
Код

                Directory.CreateDirectory(new FileInfo(fileName).DirectoryName);
                File.Create(fileName);

К файлу нельзя обратиться:
Цитата

The process cannot access the file 'C:\test\fff\1.xml' because it is being used by another process.

Автор: QryStaL 18.4.2007, 12:49
Код

            FileStream fs = File.Create(fileName);
            fs.Close();

Автор: iddqd 18.4.2007, 13:15
Код

File.Create(fileName).Close();

Сделал так. Спасибо.

Автор: Мурлыкатам_ 18.11.2007, 12:31
А как отловить исключение, если моя программа пытается получить доступ к файлу который к примеру используется другой программой. Если не обработать это исключение - фатал ерор, мот кто знает как красиво сделать try - catch?

Автор: 1stain 18.11.2007, 13:07
Мурлыкатам_
Код

            string filePath = @"C:\test.txt";
            FileStream fs;
            while (true)
            {
                try
                {
                    fs = File.Open(filePath, FileMode.Open);
                    break;
                }
                catch (IOException ex)
                {
                    if (ex.Message.Contains("because it is being used by another process"))
                    {
                        System.Windows.Forms.MessageBox.Show(string.Format("Ошибка открытия файла:{1}{0}{1}Закройте все процессы, которые работают с указанным файлом и нажмите 'Ok'.", ex.Message, Environment.NewLine), "Ошибка открытия файла", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                    }
                    else
                        throw;
                }
            }

Автор: Wizard_Memfis 18.11.2007, 13:21
Мурлыкатам_, может лучше залочить использование этого файла?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)