我在编写保存目录时遇到问题。我希望它在当前用户桌面上创建一个名为“Ausgabe”(输出)的文件夹,但我不知道如何检查它是否已经存在,如果它不存在则创建它。
到目前为止,这是该部分的当前代码:
public partial class Form1 : Form
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
// need some code here
}
我要添加什么才能让它按照我的意愿去做?
答案 0 :(得分:1)
您可以使用
检查目录是否存在Directory.Exists(pathToDirectory)
使用
创建目录Directory.CreateDirectory(pathToDirectory)
编辑回复您的评论:
string directoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Ausgabe")
应该为您提供名为' Ausgabe'的文件夹的路径。在用户Desktop-folder中。
答案 1 :(得分:1)
只需使用Directory.CreateDirectory即可。如果该目录存在,该方法将不会创建它(换句话说,它包含对Directory.Exists的内部调用)
public partial class Form1 : Form
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
public Form1()
{
string myFolder = Path.Combine(path, "Ausgabe");
Directory.CreateDirectory(myFolder);
}
要使用此方法,您需要使用System.IO 将添加到Form1.cs文件的顶部。
我还想说桌面不是为应用程序创建目录的最合适的位置。系统提供了一个适当的位置,它位于ProgramData枚举下(CommonApplicationData或ApplicationData)
string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
答案 2 :(得分:1)
根据此doc,
Directory.CreateDirectory Method (String)
会 创建指定路径中的所有目录和子目录 除非他们已经存在。
所以可以这样使用:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string desktopFolder = Path.Combine(path, "New Folder");
Directory.CreateDirectory(desktopFolder);
答案 3 :(得分:0)
您可以使用Directory.Exists()方法:https://msdn.microsoft.com/en-us/library/system.io.directory.exists(v=vs.110).aspx
你的代码看起来应该是这样的:
public static void Main()
{
// Specify the directory you want to manipulate.
string path = @"c:\MyDir";
try
{
// Determine whether the directory exists.
if (Directory.Exists(path))
{
Console.WriteLine("That path exists already.");
return;
}
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));
// Delete the directory.
di.Delete();
Console.WriteLine("The directory was deleted successfully.");
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
finally {}
}
答案 4 :(得分:0)
我最近有一个问题,所以这是我的解决方案,
我必须找到已部署的目录
var deployedDir = Assembly.GetEntryAssembly().CodeBase;
deployedDir = Path.GetDirectoryName(deployedDir);
deployedDir = deployedDir.Replace("file:\\", "");
var pathToDirectory= Path.Combine(deployedDir, "YourFileName");
然后执行上面的答案显示并创建目录(如果它不存在)
Directory.CreateDirectory(pathToDirectory)