Bayangkan saya ingin membuat (atau menimpa) file berikut: - C:\Temp\Bar\Foo\Test.txt
Dengan menggunakan metode File.Create (..) , ini bisa melakukannya.
TAPI, jika saya tidak memiliki salah satu folder berikut (dari jalur contoh itu, di atas)
- Temp
- Batang
- Foo
lalu saya mendapatkan DirectoryNotFoundException muncul .
Jadi .. diberi jalur, bagaimana kita bisa secara rekursif membuat semua folder yang diperlukan untuk membuat file .. untuk jalur itu? Jika folder Temp atau Bar ada, tetapi Foo tidak ... maka itu juga dibuat.
Untuk kesederhanaan, anggap saja tidak ada masalah Keamanan - semua izin baik-baik saja, dll.
c#
.net
file-access
Pure.Krome
sumber
sumber
Jawaban:
DirectoryInfo di = Directory.CreateDirectory(path); Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));
Lihat halaman MSDN ini .
Semoga itu bisa membantu!
sumber
Directory.CreateDirectory
tanpaDirectory.Exists
pemeriksaan terlebih dahulu - ini tidak akan muncul jika direktori sudah ada.Path.GetDirectoryName(string path)
untuk mendapatkan direktori dari jalur lengkap Andapath
tidak boleh berisi nama file. Jadi menggunakan contoh OPpath
seharusnyaC:\Temp\Bar\Foo
. Setelah meneleponDirectory.CreateDirectory(path);
Anda masih perlu meneleponFile.Create("C:\Temp\Bar\Foo\Test.txt");
untuk membuat file.Untuk meringkas apa yang telah dikomentari dalam jawaban lain:
//path = @"C:\Temp\Bar\Foo\Test.txt"; Directory.CreateDirectory(Path.GetDirectoryName(path));
Directory.CreateDirectory
akan membuat direktori secara rekursif dan jika direktori sudah ada maka akan kembali tanpa kesalahan.Jika kebetulan ada file
Foo
diC:\Temp\Bar\Foo
pengecualian akan dilempar.sumber
Gunakan Directory.CreateDirectory sebelum Anda membuat file. Ini membuat folder secara rekursif untuk Anda.
sumber
Membuat semua direktori dan subdirektori seperti yang ditentukan oleh jalur.
maka Anda dapat membuat file.
sumber
Anda perlu memeriksa kedua bagian jalur (direktori dan nama file) dan membuatnya masing-masing jika tidak ada.
Gunakan
File.Exists
danDirectory.Exists
untuk mencari tahu apakah mereka ada.Directory.CreateDirectory
akan membuat seluruh jalur untuk Anda, jadi Anda hanya perlu memanggilnya sekali jika direktori tidak ada, maka cukup buat file.sumber
Anda harus menggunakan Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
sumber
Anda ingin Directory.CreateDirectory ()
Berikut adalah kelas yang saya gunakan (dikonversi ke C #) yang jika Anda meneruskannya ke direktori sumber dan tujuan itu akan menyalin semua file dan sub-folder dari direktori itu ke tujuan Anda:
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); } } }
}
sumber
using Microsoft.VisualBasic;
Jahat !!Menganggap bahwa assembly / exe Anda memiliki izin FileIO itu sendiri, itu tidak benar. Aplikasi Anda mungkin tidak berjalan dengan hak admin. Penting untuk mempertimbangkan Keamanan Akses Kode dan meminta izin. Contoh kode:
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); }
Memahami Keamanan Akses Kode .NET
Apakah "Keamanan Akses Kode" digunakan di dunia nyata?
sumber
Saya tahu ada beberapa jawaban lain di sini, tetapi tidak ada yang tidak cukup lengkap, kode berikut akan membuat direktori (jika tidak ada) & kemudian menyalin file .
// using System.IO; // for ex. if you want to copy files from D:\A\ to D:\B\ foreach (var f in Directory.GetFiles(@"D:\A\", "*.*", SearchOption.AllDirectories)) { var fi = new FileInfo(f); var di = new DirectoryInfo(fi.DirectoryName); // you can filter files here if (fi.Name.Contains("FILTER") { if (!Directory.Exists(di.FullName.Replace("A", "B")) { Directory.CreateDirectory(di.FullName.Replace("A", "B")); File.Copy(fi.FullName, fi.FullName.Replace("A", "B")); } } }
sumber