2011-08-03 4 views
25

Mam strukturę folderu:Jaki jest najprostszy sposób zapewnienia, że ​​folder istnieje, zanim zrobię File.Move?

C: \ Temp [całkowicie pusty]

I mam plik, który chcesz przenieść do

C: \ Temp \ Folder1 \ MyFile.txt

Jeśli wykonam plik File.Move, otrzymam komunikat o błędzie informujący, że ten folder nie istnieje.

Czy istnieje metoda C#, które będą tworzyć wszystkie foldery do tej pory tak:

C: \ Temp \ Folder1 \

?

+0

nie należy przechowywać danych w temp. Lepiej użyj jakiegoś folderu AppData użytkownika. – Karsten

Odpowiedz

7
If Directory.Exists("somedir") 

Aby uzyskać więcej informacji, patrz here.

Aby utworzyć katalog, jeśli nie istnieje

Directory.CreateDirectory("path of dir"); 

Stworzy wszystkie katalogi i subdirs patrz here

3

Możesz użyć do tego celu Directory.CreateDirectory(). Podobno tworzy wszystkie katalogi na ścieżce.

Należy pamiętać, że między czasem utworzenia katalogu a czasem przeniesienia pliku ktoś mógł usunąć katalog. Nie ma więc absolutnej pewności, że katalog rzeczywiście będzie istniał, gdy spróbujesz przenieść plik. Jednym możliwym wyjątkiem jest użycie filesystem transactions.

+0

Twoja uwaga, że ​​nie możemy być absolutnie pewni, jest zła. Możesz wyraźnie sprawdzić, czy istnieje przed zrobieniem czegokolwiek z tym folderem. Biorąc pod uwagę, że aplikacja działa szybciej, człowiek może usunąć folder i pod warunkiem, że zawsze sprawdzasz, czy folder istnieje, folder zawsze tam będzie. –

+4

Technicznie ma rację, między czekiem a ruchem jest sytuacja wyścigowa. W praktyce nie jest to coś, o co bym się martwił w swoim zgłoszeniu, ponieważ byłoby to prawie niemożliwe do spotkania. –

+6

@Rahmound, a co jeśli drugi nie jest człowiekiem, ale inną aplikacją? Na przykład taki, który okresowo czyści katalog Temp? – svick

Powiązane problemy