【问题标题】:How do you create a folder containing all the files in a project?如何创建一个包含项目中所有文件的文件夹?
【发布时间】:2017-07-29 23:55:36
【问题描述】:

我正在C# 中创建一个应用程序,它会在启动时显示一个对话框并询问项目名称。同时,我添加了 2 个按钮:CreateExit

如果您按创建,您在TextBox 中键入的项目名称将与该名称一起保存在 Documents 文件夹中。项目文件夹内将包含 2 个单独的文件夹,分别称为 imgjs。如果您下次尝试创建一个名称为该文件夹存在的项目,它不会覆盖该文件夹(假设我显示了一个MsgBox)。代码如下:

//Unable to create project
        string mydir = Environment.SpecialFolder.MyDocuments + "\\" + textBox1.Text;
        if (Directory.Exists(mydir) == true)
        {
                MessageBox.Show("The project name: " + textBox1.Text + " has already been created. Please consider renaming a different project name.", "Netplait", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBox1.Focus();
                return;
        }

        if (Directory.Exists(mydir) == false)
        {
            Directory.CreateDirectory(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), textBox1.Text));
        }

【问题讨论】:

  • 所以你问的是如何删除文件夹并创建一个新文件夹或如何检测该文件夹已经存在?
  • 使用文本框输入名称创建一个文件夹目录,然后如果我们像以前一样输入相同的项目名称,它将检测并禁用请求
  • 你需要调用Directory.Exists方法
  • 我尝试这样做,但它不起作用。我会编辑我的帖子并快速添加代码
  • 初始化mydir时为什么不使用Path.Combine

标签: c# .net windows project documents


【解决方案1】:

Environment.SpecialFolder.MyDocuments 是一个枚举,而不是现有目录的路径。您的代码失败,因为将此枚举值连接到文本框中的字符串没有意义。

相反,您将获得实际的 MyDocument 文件夹

string mydir = Environment.GetFolderPath(Environement.SpecialFolder.MyDocuments);
mydir = Path.Combine(myDir, textBox1.Text);
if(DirectoryExists(myDir))
{
    MessageBox.Show(.....);
    textBox1.Focus();
    return;
}
else
{
    Directory.CreateDirectory(myDir);
}

还要注意,要组合字符串并创建有效路径,最好将此任务留给专用方法Path.Combine
顺便说一句,您可以在代码的 Directory.CreateDirectory 部分中找到它。

【讨论】:

    最近更新 更多