如何在创建文件夹时移动文件。 Directory.Method等

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在创建文件夹时移动文件。 Directory.Method等相关的知识,希望对你有一定的参考价值。

我发现了一个python帖子,但无法“转换”它...

所以我已经有了这个:

    if (Directory.GetFiles(sourcePath, "*_Items_*.pdf").Any())
    {
        string[] pdfFiles = Directory.GetFiles(sourcePath, "*_Items_*.pdf");
        foreach (string path in pdfFiles)
        {
            file = Path.GetFileName(path);
            subString = file.Substring(0, 8);
            Directory.CreateDirectory(Path.Combine(targetPath, subString));
        } 
    }

所以在代码中我从文件中取出字母并使用这些子字符串创建文件夹。我如何将这些文件直接移动到用其子字符串创建的文件夹中?

如果是,因为我没有文件时发出一条消息“没有找到项目列表”。

感谢每一位帮助。

答案

有两种方法FileInfo.MoveTo() vs File.Move()可以使用。

代码可以在LINQ的帮助下:检查文件是否存在后,为每个文件创建一个目录。然后移动到创建的新文件夹

var files = Directory.GetFiles(sourcePath, "*_Items_*.pdf").ToList();

files.ForEach(f => {
    var fileInfo = new FileInfo(f);
    var pathName= fileInfo.Name.Substring(0, 8);

    var directoryInfo = new DirectoryInfo(Path.Combine(targetPath, pathName));
    if(!directoryInfo.Exists)
       directoryInfo.Create();

    fileInfo.MoveTo(Path.Combine(directoryInfo.FullName, fileInfo.Name); // think about if file already exist

})
另一答案

我想你可以简单地使用File.Move来移动文件。

foreach (string path in pdfFiles)
{
    file = Path.GetFileName(path);
    subString = file.Substring(0, 8);
    var targetFolder = Path.Combine(targetPath, subString);
    Directory.CreateDirectory(targetFolder);
    // Move the file into the created folder
    File.Move(path, Path.Combine(targetFolder, file));
} 

以上是关于如何在创建文件夹时移动文件。 Directory.Method等的主要内容,如果未能解决你的问题,请参考以下文章

C#如何在指定目录下创建文件

文件操作类File

访问路径被拒绝 - C# Directory.Move

linux如何复制移动文件

Linux命令----文件的移动和重命名

为啥我使用 directory.delete 时 gif 文件不会删除?