日期:2014-05-16  浏览次数:20713 次

请教创建文件夹问题
string FolderStr="2";
//string FolderStr=@"d:\NewFolder";//这样就是正常在d:\NewFolder创建了文件夹。
if (Directory.Exists(FolderStr))
            {//存在打开
                System.Diagnostics.Process.Start("Explorer.exe", FolderStr);
            }
            else
            {//不存在创建
                try
                {
                    Directory.CreateDirectory(FolderStr);
                    System.Diagnostics.Process.Start("Explorer.exe", FolderStr);
                }
                catch (Exception E)
                {
                    MessageBox.Show(E.Message);
                }
                
            }

这样创建文件夹竟然不是报错,而是在程序的根目录创建了文件夹
------解决方案--------------------
因为这本来就是允许的。。。当然不会catch到错误

MSDN的文档做如下说明
若要在当前目录是 C:\Users\User1 时创建目录 C:\Users\User1\Public\Html,可以使用以下三种方法:
Directory.CreateDirectory("Public\\Html");
Directory.CreateDirectory("\\Users\\User1\\Public\\Html");
Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html");


所以楼主的方法符合第一种
------解决方案--------------------


    你想要的结果是当用户直接输入类似2这样的路径的时候,程序不创建文件夹,而是抛出异常,是吗?

如果是这样,你可以用String类里面IndexOf(':')来判断。如果这个函数返回的结果小于0,那么你自己就抛出一个路径错误的异常
------解决方案--------------------
创建不再预设的位置,不一定算错误