相关疑难解决方法(0)

如果文件夹不存在,请创建它

我在我的应用程序中使用FileUploader控件.我想将文件保存在指定的文件夹中.现在我想,如果此文件夹不存在,首先创建它,然后将我的文件保存到此文件夹.如果该文件夹已存在,则只需将文件保存在其中.

我怎么能这样做?

c# asp.net directory

667
推荐指数
11
解决办法
74万
查看次数

什么是在我执行File.Move之前确保文件夹存在的最简单方法?

我有一个文件夹结构:

C:\ Temp [完全空]

我有一个我想要移动的文件

C:\ TEMP\Folder1中\ MyFile.txt的

如果我执行File.Move我将收到一个错误,说该文件夹不存在.

是否有任何C#方法将创建到目前为止的所有文件夹,因此:

C:\ TEMP\Folder1中\

c# directory io file

31
推荐指数
3
解决办法
2万
查看次数

CopyTo()到一个尚不存在的目录

我想将文件c:\ a1\b2\c3\foo.txt复制到d:\ a1\b2\c3\foo.txt.子驱动器在D驱动器上不存在,如果我尝试直接执行CopyTo(),我将获得IO异常.我无法找到任何内置的c#函数来完成创建缺少目录的脏工作.所以我写了这个:

FileInfo file = new FileInfo(@"c:\a1\b2\c3\foo.txt");
DirectoryInfo destDir = new DirectoryInfo(file.DirectoryName.Replace("c:", "d:");

if (!destDir.Exists) // false
    CreateDirectory(destDir, null);
file.CopyTo(file.FullName.Replace("c:", "d:"), true);

private void CreateDirectory(DirectoryInfo endDir, Stack<DirectoryInfo> trail)
{
    if (trail == null)
    {
        trail = new Stack<DirectoryInfo>();
        trail.Push(endDir);
    }

    // remove last directory - c:\a1\b2\c3, c:\a1\b2, c:\a1
    Match theMatch = Regex.Match(endDir.FullName, @".*(?=\\\w*\Z)"); 
    DirectoryInfo checkDir = new DirectoryInfo(theMatch.ToString());
    if (!checkDir.Exists)
    {
        trail.Push(checkDir);
        CreateDirectory(checkDir, trail);
    }
    else
        foreach (DirectoryInfo dir in trail)
            Directory.CreateDirectory(dir.FullName);
}
Run Code Online (Sandbox Code Playgroud)

这非常复杂,正如他们喜欢在深夜的商业广告中说的那样,"必须有更好的方法!"

问题:如何使上述功能移动高效?我是否错过了一个内置方法,已经完成了我正在做的所有事情?

c# directory recursion

2
推荐指数
1
解决办法
5218
查看次数

标签 统计

c# ×3

directory ×3

asp.net ×1

file ×1

io ×1

recursion ×1