Представьте, что я хочу создать (или перезаписать) следующий файл: - C:\Temp\Bar\Foo\Test.txt
Используя метод File.Create (..) , это можно сделать.
НО, если у меня нет ни одной из следующих папок (из этого примера, путь выше)
- температура
- Бар
- Foo
тогда я получаю исключение DirectoryNotFoundException .
Итак ... учитывая путь, как мы можем рекурсивно создать все папки, необходимые для создания файла ... для этого пути? Если папки Temp или Bar существуют, а Foo нет ..., то они тоже создаются.
Для простоты предположим, что проблем безопасности нет - все разрешения в порядке и т. Д.
c#
.net
file-access
Pure.Krome
источник
источник
Ответы:
Смотрите эту страницу MSDN .
Надеюсь, это поможет!
источник
Directory.CreateDirectory
безDirectory.Exists
чека - он не выдаст, если каталог уже существует.Path.GetDirectoryName(string path)
получить каталог с полным путемpath
не должна содержать имя файла. Таким образом, использование примера OPpath
должно бытьC:\Temp\Bar\Foo
. После звонкаDirectory.CreateDirectory(path);
вам все равно нужно позвонить,File.Create("C:\Temp\Bar\Foo\Test.txt");
чтобы создать файл.Подводя итог тому, что было прокомментировано в других ответах:
Directory.CreateDirectory
создаст каталоги рекурсивно, и если каталог уже существует, он вернется без ошибки.Если случился файл,
Foo
вC:\Temp\Bar\Foo
исключение будет брошено.источник
Используйте Directory.CreateDirectory перед созданием файла. Он создает папку рекурсивно для вас.
источник
Создает все каталоги и подкаталоги, как указано путем.
тогда вы можете создать файл.
источник
Вам нужно будет проверить обе части пути (каталог и имя файла) и создать каждую, если она не существует.
Используйте
File.Exists
и,Directory.Exists
чтобы узнать, существуют ли они.Directory.CreateDirectory
создаст полный путь для вас, так что вам нужно будет вызвать его только один раз, если каталог не существует, а затем просто создать файл.источник
Вы должны использовать Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
источник
Вы хотите Directory.CreateDirectory ()
Вот класс, который я использую (преобразованный в C #): если вы передадите ему исходный каталог и место назначения, он скопирует все файлы и подпапки этого каталога в ваше место назначения:
}
источник
using Microsoft.VisualBasic;
зло !!Предполагать, что ваша сборка / exe имеет разрешение на FileIO само по себе, ну не правильно. Ваше приложение может не работать с правами администратора. Важно учитывать безопасность доступа к коду и запрашивать разрешения. Пример кода:
Понимание .NET Code Access Security
Используется ли «Code Access Security» в реальном мире?
источник
Я знаю, что здесь есть некоторые другие ответы, но ни один из них не является достаточно полным, следующий код создаст каталоги (если не существует) и затем скопирует файлы .
источник