如何在创建文件夹时移动文件。 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等的主要内容,如果未能解决你的问题,请参考以下文章