Как я создаю файл И какие-либо папки, если папки не существуют?

Предположите, что я хочу создать (или перезапись) следующий файл:- C:\Temp\Bar\Foo\Test.txt

Использование Файла. Создать (..) метод, это может сделать это.

НО, если у меня нет ни одной из следующих папок (от того пути в качестве примера, выше)

  • Временный файл
  • Панель
  • Нечто

затем я бросил DirectoryNotFoundException.

Так.. учитывая путь, как мы можем рекурсивно создать все папки, необходимые для создания файла.. для того пути? Если папки Temp или Bar существуют, но Foo не делает... затем, это создается также.

Для простоты, позволяет, предполагают, что нет никаких Проблем безопасности - все полномочия прекрасны и т.д.

123
задан eddie 6 November 2019 в 14:52
поделиться

7 ответов

DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.",
    Directory.GetCreationTime(path));

См. эту страницу MSDN.

Надеюсь, это поможет!

109
ответ дан 24 November 2019 в 01:15
поделиться

Используйте Directory.CreateDirectory перед созданием файла. Это создаст папку рекурсивно для вас.

16
ответ дан 24 November 2019 в 01:15
поделиться

Вам нужно будет проверить обе части пути (каталог и имя файла) и создать каждую, если она не существует.

Используйте Файл.Существует и Каталог.Существует, чтобы узнать, существуют ли они. Directory.CreateDirectory создаст для вас весь путь, поэтому вам нужно вызвать его только один раз, если каталог не существует, а затем просто создать файл.

3
ответ дан 24 November 2019 в 01:15
поделиться

Вы должны использовать Directory.CreateDirectory.

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx

2
ответ дан 24 November 2019 в 01:15
поделиться

Вы хотите Directory.CreateDirectory ()

Вот класс, который я использую (преобразованный в C #), который, если вы передадите ему исходный каталог и место назначения, он скопирует все файлы и подпапки этого каталога в ваш пункт назначения:

using System.IO;

public class copyTemplateFiles
{


public static bool Copy(string Source, string destination)
{

    try {

        string[] Files = null;

        if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
            destination += Path.DirectorySeparatorChar;
        }

        if (!Directory.Exists(destination)) {
            Directory.CreateDirectory(destination);
        }

        Files = Directory.GetFileSystemEntries(Source);
        foreach (string Element in Files) {
            // Sub directories
            if (Directory.Exists(Element)) {
                copyDirectory(Element, destination + Path.GetFileName(Element));
            } else {
                // Files in directory
                File.Copy(Element, destination + Path.GetFileName(Element), true);
            }
        }

    } catch (Exception ex) {
        return false;
    }

    return true;

}



private static void copyDirectory(string Source, string destination)
{
    string[] Files = null;

    if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
        destination += Path.DirectorySeparatorChar;
    }

    if (!Directory.Exists(destination)) {
        Directory.CreateDirectory(destination);
    }

    Files = Directory.GetFileSystemEntries(Source);
    foreach (string Element in Files) {
        // Sub directories
        if (Directory.Exists(Element)) {
            copyDirectory(Element, destination + Path.GetFileName(Element));
        } else {
            // Files in directory
            File.Copy(Element, destination + Path.GetFileName(Element), true);
        }
    }

}

}

0
ответ дан 24 November 2019 в 01:15
поделиться

. задан путь, как мы можем рекурсивно создать все папки, необходимые для создания файла ... для этого пути

Создает все каталоги и подкаталоги, указанные путем.

Directory.CreateDirectory(path);

затем вы можете создать файл.

2
ответ дан 24 November 2019 в 01:15
поделиться

Предполагая, что ваша сборка / exe имеет разрешение FileIO , это неправильно. Ваше приложение может не запускаться с правами администратора. Важно учитывать Безопасность доступа для кода и запрос разрешений Пример кода:

FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}

Общие сведения о безопасности доступа для кода .NET

Используется ли «Безопасность доступа для кода» в реальном мире?

0
ответ дан 24 November 2019 в 01:15
поделиться
Другие вопросы по тегам:

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