为什么我不能重命名我的文件和文件夹?
Why I can't rename my files and folders?
所以我正在重新编写一个例程来重命名东西。我的文件夹树结构类似于:
Folder -> Folder(s) -> Folder(s) + ImageFile(s)
Session -> Location(s) -> Test(s) + Images
所有位置都有相同的测试,重命名一个必须重命名所有位置。此外,每张图片都有一个与该图片同名的相关文件夹。因此图像 "one"、"two"、"three" 将在同一目录(位置)中包含文件夹 "one"、"two"、"three"。
我正在使用此代码重命名:
DirectoryInfo MainSessionFolder = new DirectoryInfo(FileStructure.CurrentSessionPath); // Main Session Folder
DirectoryInfo[] locations = MainSessionFolder.GetDirectories(); // Get all locations
foreach(var location in locations) // for every location
{
DirectoryInfo[] TestFolders = location.GetDirectories(); // get test folders in that location
foreach (var TestFolder in TestFolders) // for every test folder
{
if(SelectedTest.Name == TestFolder.Name) // check it it's what we want to rename
Directory.Move(TestFolder.FullName, TestFolder.Name.Replace(SelectedTest.Name, NewName)); // rename it
}
FileInfo[] AllFiles = location.GetFiles(); // get all files in that location
foreach (var ThisFile in AllFiles) // for every file in that location
{
if (SelectedTest.Name == ThisFile.Name) // check
File.Move(SelectedTest.Name, NewName); // rename
}
}
它在 DirectoryInfo.move
上弹出一个错误(不是 FileInfo.move
,很奇怪,因为错误说文件)说:
An exception of type 'System.IO.IOException' ....
.. Cannot create a file when that file already exists ..
听起来你的移动和移动都指向同一个位置。
尝试暂时将您的 Directory.Move 语句分解为更小的部分,然后逐步检查所有值是否符合您的预期。
string target = TestFolder.Name.Replace(SelectedTest.Name, NewName);
然后检查TestFolder.FullName、TestFolder.Name、SelectedTest.Name、NewName、target
的值
检查它们是否符合您的预期,并在资源管理器中检查目标目录是否不存在。
应该能让您了解问题所在。
所以我正在重新编写一个例程来重命名东西。我的文件夹树结构类似于:
Folder -> Folder(s) -> Folder(s) + ImageFile(s)
Session -> Location(s) -> Test(s) + Images
所有位置都有相同的测试,重命名一个必须重命名所有位置。此外,每张图片都有一个与该图片同名的相关文件夹。因此图像 "one"、"two"、"three" 将在同一目录(位置)中包含文件夹 "one"、"two"、"three"。
我正在使用此代码重命名:
DirectoryInfo MainSessionFolder = new DirectoryInfo(FileStructure.CurrentSessionPath); // Main Session Folder
DirectoryInfo[] locations = MainSessionFolder.GetDirectories(); // Get all locations
foreach(var location in locations) // for every location
{
DirectoryInfo[] TestFolders = location.GetDirectories(); // get test folders in that location
foreach (var TestFolder in TestFolders) // for every test folder
{
if(SelectedTest.Name == TestFolder.Name) // check it it's what we want to rename
Directory.Move(TestFolder.FullName, TestFolder.Name.Replace(SelectedTest.Name, NewName)); // rename it
}
FileInfo[] AllFiles = location.GetFiles(); // get all files in that location
foreach (var ThisFile in AllFiles) // for every file in that location
{
if (SelectedTest.Name == ThisFile.Name) // check
File.Move(SelectedTest.Name, NewName); // rename
}
}
它在 DirectoryInfo.move
上弹出一个错误(不是 FileInfo.move
,很奇怪,因为错误说文件)说:
An exception of type 'System.IO.IOException' ....
.. Cannot create a file when that file already exists ..
听起来你的移动和移动都指向同一个位置。
尝试暂时将您的 Directory.Move 语句分解为更小的部分,然后逐步检查所有值是否符合您的预期。
string target = TestFolder.Name.Replace(SelectedTest.Name, NewName);
然后检查TestFolder.FullName、TestFolder.Name、SelectedTest.Name、NewName、target
的值检查它们是否符合您的预期,并在资源管理器中检查目标目录是否不存在。
应该能让您了解问题所在。