我在此上找到了一条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));
}
}
因此,在代码中,我从文件中取出字母,并使用这些子字符串创建文件夹。我还将如何将这些文件直接移动到由其子字符串创建的文件夹中?
如果不是这样,是因为我在没有文件的情况下发出一条消息,提示“找不到项目列表”。
感谢所有帮助,谢谢。
答案 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
})