我有任务将文件分类到目录中。
我有以下文件:
AA12.txt
AA34.txt
AA56.txt
BB12.txt
BB34.txt
etc.
我需要创建一个函数,该函数将根据前两个字母创建目录并在其中复制对应的文件。
因此,将存在具有文件AA12,AA34,AA56的目录AA和具有文件BB12,BB34等的目录BB。
AA
|- AA12
|- AA34
|- AA56
BB
|- BB12
|- BB34
我正在考虑只手动创建所有目录,然后复制文件。
string directoryPath = @"C:\\AA";
if (!Directory.Exists(directoryPath))
{
Directory.CreateDirectory(directoryPath);
}
但是,有没有更优雅,更自动化的方式来做这样的事情? 谢谢
答案 0 :(得分:0)
感谢@Mong Zhu指出完整路径问题,请尝试以下方法:
string path = ".";
foreach (string file in Directory.GetFiles(path))
{
string fileName = Path.GetFileName(file);
string dirfileName = fileName.Substring(0, 2);
if (!Directory.Exists(dirfileName))
{
Directory.CreateDirectory(dirfileName);
}
File.Copy(path + "\\" + fileName, path + "\\" +dirfileName + "\\" + fileName);
}
答案 1 :(得分:0)
感谢Sohaib Jundi,我找到了解决方案,我这样做是这样的:
string path = @"C:\\";
string destination = @"E:\\";
foreach (string fileName in Directory.GetFiles(path))
{
string onlyFileName = Path.GetFileName(fileName);
string dirName = onlyFileName.Substring(0, 2);
string dirPath = $@"{destination}\{dirName}";
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
File.Copy(fileName, $@"{dirPath}\{onlyFileName}");
}
感谢Sohaib Jundi的帮助,希望有人会发现它有用。