Ho una raccolta di file con percorsi completi (root/test/thing1/thing2/file.txt). Voglio foreach
su questa raccolta e rilasciare il file nella posizione definita nel percorso, tuttavia, se alcune directory non esistono, voglio che vengano create automaticamente. Il mio programma ha un "drop location" predefinito, come ad esempio z:/
. Il "drop location" inizia vuoto, quindi nel mio esempio sopra, il primo elemento dovrebbe creare automaticamente le directory necessarie per creare z:/root/test/thing1/thing2/file.txt
. Come posso fare questo?Crea automaticamente directory da percorsi lunghi
10
A
risposta
16
foreach (var relativePath in files.Keys)
{
var fullPath = Path.Combine(defaultLocation, relativePath);
var directory = Path.GetDirectoryName(fullPath);
Directory.CreateDirectory(directory);
saveFile(fullPath, files[relativePath]);
}
dove file è IDictionary<string, object>
.
10
string somepath = @"z:/root/test/thing1/thing2/file.txt";
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName((somepath));
3
Controllare IO namespace (Directory, Path), penso che vi aiuteranno
using System.IO
controllarlo ..
string fileName [email protected]"d:/root/test/thing1/thing2/file.txt";
string directory = Path.GetDirectoryName(fileName);
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory);
7
Directory.CreateDirectory("/root/...")
Crea tutte le directory e sottodirectory in il percorso specificato
1
string filename = "c:\\temp\\wibble\\wobble\\file.txt";
string dir = Path.GetDirectoryName(filename);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.Create(filename);
con adeguata gestione delle eccezioni, ovviamente.
0
Ho trovato l'impostazione del "percorso predefinito" all'inizio dell'esecuzione per essere utile e ridurre un po 'di codice ridondante (ad esempio, Path.Combine(defaultLocation, relativePath)
).
Esempio:
var defaultLocation = "z:/";
Directory.SetCurrentDirectory(defaultLocation);
Directory.SetCurrentDirectory(AppContext.BaseDirectory);
Concordato, non c'è bisogno di controllare se directory esiste come fa questo internamente. – Squirrel