16

完全修飾パス (root/test/thing1/thing2/file.txt) を持つファイルのコレクションがあります。このコレクションを上書きして、パスで定義された場所にファイルをドロップしたいforeachのですが、特定のディレクトリが存在しない場合は、それらを自動的に作成したいと考えています。私のプログラムには、 などのデフォルトの「ドロップ場所」がありますz:/。「ドロップ場所」は空で始まるため、上記の例では、最初の項目が作成に必要なディレクトリを自動的に作成する必要がありますz:/root/test/thing1/thing2/file.txt。これどうやってするの?

4

6 に答える 6

22
foreach (var relativePath in files.Keys)
{
    var fullPath = Path.Combine(defaultLocation, relativePath);
    var directory = Path.GetDirectoryName(fullPath);

    Directory.CreateDirectory(directory);

    saveFile(fullPath, files[relativePath]);
}

ファイルはどこにありますかIDictionary<string, object>

于 2010-10-27T19:21:56.553 に答える
17
string somepath = @"z:/root/test/thing1/thing2/file.txt";
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName( ( somepath ) );
于 2010-10-27T19:20:33.093 に答える
8
Directory.CreateDirectory("/root/...") 

指定されたパスにすべてのディレクトリとサブディレクトリを作成します

于 2010-10-27T19:21:50.827 に答える
4

IO名前空間DirectoryPath )を確認してください。役立つと思います

using System.IO

それからそれを確認してください..

string fileName =@"d:/root/test/thing1/thing2/file.txt"; 
string directory = Path.GetDirectoryName(fileName);
if (!Directory.Exists(directory))
    Directory.CreateDirectory(directory);
于 2010-10-27T19:21:17.503 に答える
1
string filename = "c:\\temp\\wibble\\wobble\\file.txt";
string dir = Path.GetDirectoryName(filename);
if (!Directory.Exists(dir))
{
    Directory.CreateDirectory(dir);
}
File.Create(filename);

もちろん、適切な例外処理があります。

于 2010-10-27T19:24:42.240 に答える
0

実行の開始時に「デフォルトの場所」を設定すると便利で、冗長なコードを少し減らすことができます (例: Path.Combine(defaultLocation, relativePath))。

例:

var defaultLocation = "z:/";
Directory.SetCurrentDirectory(defaultLocation);
Directory.SetCurrentDirectory(AppContext.BaseDirectory);
于 2017-06-30T14:38:09.203 に答える