首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >c# -复制文件路径中的文件夹结构的功能

c# -复制文件路径中的文件夹结构的功能
EN

Stack Overflow用户
提问于 2009-01-13 08:27:24
回答 4查看 23.5K关注 0票数 20

我需要一个简单的函数,它将接受一个FileInfo和一个destination_directory_name作为输入,从文件信息中获取文件路径,并将其复制到作为第二个参数传递的destination_directory_name中。

对于ex。destination_directory_name为"d:\recordings\location1\client1\job1\file1.ext,如果目录不存在,函数应在filepath中创建目录,并在创建目录后复制文件。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-13 08:32:52

为此,我使用了以下方法:

代码语言:javascript
复制
public static void CreateDirectory(DirectoryInfo directory)
{
    if (!directory.Parent.Exists)
        CreateDirectory(directory.Parent);
    directory.Create();
}

这样使用它:

代码语言:javascript
复制
// path is your file path
string directory = Path.GetDirectoryName(path);
CreateDirectory(new DirectoryInfo(directory));
票数 33
EN

Stack Overflow用户

发布于 2009-07-18 10:51:33

System.IO.Directory.CreateDirectory可以用来创建最终目录,如果所有文件夹不存在,它还会自动创建路径中的所有文件夹。

代码语言:javascript
复制
//Will create all three directories (if they do not already exist).
System.IO.Directory.CreateDirectory("C:\\First\\Second\\Third")
票数 52
EN

Stack Overflow用户

发布于 2012-09-06 11:01:47

基于@NTDLS的回答,这里有一种将源复制到目标的方法。它处理源是文件或文件夹的情况。函数名有点臭...如果你想出更好的办法,请告诉我。

代码语言:javascript
复制
    /// <summary>
    /// Copies the source to the dest.  Creating any neccessary folders in the destination path as neccessary.
    /// 
    /// For example:
    /// Directory Example:
    /// pSource = C:\somedir\conf and pDest=C:\somedir\backups\USER_TIMESTAMP\somedir\conf   
    /// all files\folders under source will be replicated to destination and any paths in between will be created.
    /// </summary>
    /// <param name="pSource">path to file or directory that you want to copy from</param>
    /// <param name="pDest">path to file or directory that you want to copy to</param>
    /// <param name="pOverwriteDest">if true, files/directories in pDest will be overwritten.</param>
    public static void FileCopyWithReplicate(string pSource, string pDest, bool pOverwriteDest)
    {
        string destDirectory = Path.GetDirectoryName(pDest);
        System.IO.Directory.CreateDirectory(destDirectory);

        if (Directory.Exists(pSource))
        {
            DirectoryCopy(pSource, pDest,pOverwriteDest);
        }
        else
        {
            File.Copy(pSource, pDest, pOverwriteDest);
        }
    }

    // From MSDN Aricle "How to: Copy Directories"
    // Link: http://msdn.microsoft.com/en-us/library/bb762914.aspx
    private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
    {
        DirectoryInfo dir = new DirectoryInfo(sourceDirName);
        DirectoryInfo[] dirs = dir.GetDirectories();

        if (!dir.Exists)
        {
            throw new DirectoryNotFoundException(
                "Source directory does not exist or could not be found: "
                + sourceDirName);
        }

        if (!Directory.Exists(destDirName))
        {
            Directory.CreateDirectory(destDirName);
        }

        FileInfo[] files = dir.GetFiles();
        foreach (FileInfo file in files)
        {
            string temppath = Path.Combine(destDirName, file.Name);
            file.CopyTo(temppath, true);
        }

        if (copySubDirs)
        {
            foreach (DirectoryInfo subdir in dirs)
            {
                string temppath = Path.Combine(destDirName, subdir.Name);
                DirectoryCopy(subdir.FullName, temppath, copySubDirs);
            }
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/438321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档