Wyobraź sobie, że chciałbym utworzyć (lub nadpisać) następujący plik: - C:\Temp\Bar\Foo\Test.txt
Można to zrobić przy użyciu metody File.Create (..) .
ALE, jeśli nie mam żadnego z następujących folderów (z tej przykładowej ścieżki powyżej)
- Temp
- Bar
- bla
następnie otrzymuję zgłoszenie DirectoryNotFoundException .
Więc… mając ścieżkę, jak możemy rekurencyjnie utworzyć wszystkie foldery potrzebne do utworzenia pliku… dla tej ścieżki? Jeśli istnieją foldery Temp lub Bar, ale Foo nie ... to również jest tworzone.
Dla uproszczenia załóżmy, że nie ma obaw związanych z bezpieczeństwem - wszystkie uprawnienia są w porządku itp.
c#
.net
file-access
Pure.Krome
źródło
źródło
Odpowiedzi:
Zobacz tę stronę MSDN .
Mam nadzieję, że to pomoże!
źródło
Directory.CreateDirectory
bezDirectory.Exists
sprawdzenia najpierw - nie zostanie wyrzucony, jeśli katalog już tam jest.Path.GetDirectoryName(string path)
pobraniu katalogu z pełnej ścieżkipath
nie powinna zawierać nazwy pliku. Tak więc na przykładzie POpath
powinno byćC:\Temp\Bar\Foo
. Po wywołaniuDirectory.CreateDirectory(path);
nadal musisz zadzwonić,File.Create("C:\Temp\Bar\Foo\Test.txt");
aby utworzyć plik.Podsumowując, co zostało skomentowane w innych odpowiedziach:
Directory.CreateDirectory
utworzy katalogi rekurencyjnie i jeśli katalog już istnieje, zwróci bez błędu.Jeśli zdarzyło się, że plik
Foo
wC:\Temp\Bar\Foo
wyjątku zostanie wyrzucony.źródło
Użyj Directory.CreateDirectory przed utworzeniem pliku. Tworzy folder rekursywnie dla Ciebie.
źródło
Tworzy wszystkie katalogi i podkatalogi określone przez ścieżkę.
wtedy możesz stworzyć plik.
źródło
Będziesz musiał sprawdzić obie części ścieżki (katalog i nazwę pliku) i utworzyć każdą, jeśli nie istnieje.
Użyj
File.Exists
i,Directory.Exists
aby dowiedzieć się, czy istnieją.Directory.CreateDirectory
utworzy dla ciebie całą ścieżkę, więc wystarczy wywołać ją tylko raz, jeśli katalog nie istnieje, a następnie po prostu utworzyć plik.źródło
Powinieneś użyć Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
źródło
Chcesz Directory.CreateDirectory ()
Oto klasa, której używam (przekonwertowana na C #), która jeśli przekażesz jej katalog źródłowy i miejsce docelowe, skopiuje wszystkie pliki i podfoldery tego katalogu do twojego miejsca docelowego:
}
źródło
using Microsoft.VisualBasic;
Zło !!Zakładając, że twój assembler / exe ma uprawnienia FileIO , to nie jest w porządku. Twoja aplikacja może nie działać z uprawnieniami administratora. Ważne jest, aby wziąć pod uwagę bezpieczeństwo dostępu do kodu i żądanie uprawnień Przykładowy kod:
Zrozumienie zabezpieczeń dostępu do kodu .NET
Czy „bezpieczeństwo dostępu kodu” ma zastosowanie w prawdziwym świecie?
źródło
Wiem, że są tu inne odpowiedzi, ale żadna z nich nie jest wystarczająco kompletna, następujący kod utworzy katalogi (jeśli nie istnieją), a następnie skopiuje pliki .
źródło