我有一组具有完全限定路径的文件(root/test/thing1/thing2/file.txt)。我想foreach
覆盖这个集合并将文件放到路径中定义的位置,但是,如果某些目录不存在,我希望它们能够自动创建。我的程序有一个默认的“放置位置”,例如z:/
. “放置位置”一开始是空的,所以在我上面的示例中,第一项应该自动创建创建所需的目录z:/root/test/thing1/thing2/file.txt
。我怎样才能做到这一点?
问问题
18950 次
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 回答
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 回答