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

时间:2018-09-03 07:25:16

标签: c# file-io

  

我在此上找到了一条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));
        } 
    }

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

如果不是这样,是因为我在没有文件的情况下发出一条消息,提示“找不到项目列表”。

感谢所有帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

我想您可以简单地使用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));
} 

答案 1 :(得分:2)

有两种使用方法FileInfo.MoveTo()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

})