C#海量文件重命名器
我想创建C#mass文件重命名器,这是我的UI 我已经创建了C#海量文件重命名器,c#,file,io,C#,File,Io,我想创建C#mass文件重命名器,这是我的UI 我已经创建了tes文件夹,在tes里面有一个文件1.txt 我想创建我的程序,为文件添加前缀和后缀,这样1.txt将成为 prefix1suffix 但后来我犯了一个错误 据说文件已经存在,虽然tes文件夹中只有一个文件,那就是1.txt如何使它工作?错误来自哪里 我尝试了以下代码 private void Rename(string prefix, string filepath, string suffix) {
tes
文件夹,在tes
里面有一个文件1.txt
我想创建我的程序,为文件添加前缀和后缀,这样1.txt
将成为
prefix1suffix
但后来我犯了一个错误
据说文件已经存在
,虽然tes
文件夹中只有一个文件,那就是1.txt
如何使它工作?错误来自哪里
我尝试了以下代码
private void Rename(string prefix, string filepath, string suffix)
{
//i don't use prefix suffix yet to make sure if my function works
DirectoryInfo d = new DirectoryInfo(filepath);
FileInfo[] file = d.GetFiles();
try
{
foreach (FileInfo f in file )
{
File.Move(f.FullName,"stackoverflow");
}
}
catch (Exception e)
{
cmd.cetakGagal(e.ToString(), title);
}
cmd.cetakSukses("Rename Success", title);
}
它返回与上面第二张图片相同的错误
下图是tes
文件夹,除了1.txt
上面的代码将给出该错误,因为在第一次运行之后,“stackoverflow”作为文件存在。在调用file.Move之前,请确保检查目标文件是否存在(使用
file.exists
)。上述代码将显示该错误,因为在第一次运行后,“stackoverflow”作为文件存在。在调用file.Move之前,请确保检查目标文件是否存在(使用file.exists
)。您的文件.Move
正在将它们全部更改为StackOverflow,而不使用前缀和后缀。如果目录中只有一个文件,那就不成问题了。您确定只有一个文件吗
public static void Move(
string sourceFileName,
string destFileName
)
在为目标文件指定相对路径时,查看这一点可能就是线索。要获取当前工作目录,请参阅
允许sourceFileName和destFileName参数指定
相对或绝对路径信息。相对路径信息为
解释为相对于当前工作目录
你应该改变
File.Move(f.FullName,"stackoverflow");
到
您的
文件.Move
正在将它们全部更改为StackOverflow,而不使用前缀和后缀。如果目录中只有一个文件,那就不成问题了。您确定只有一个文件吗
public static void Move(
string sourceFileName,
string destFileName
)
在为目标文件指定相对路径时,查看这一点可能就是线索。要获取当前工作目录,请参阅
允许sourceFileName和destFileName参数指定
相对或绝对路径信息。相对路径信息为
解释为相对于当前工作目录
你应该改变
File.Move(f.FullName,"stackoverflow");
到
您正在调用
File.Move()
,其中包含sourceFileName
的完整路径和destFileName
的相对路径。相对文件路径相对于当前工作目录,而不是源文件路径。我希望当前工作目录中存在一个stackoverflow
文件,该文件很可能是在您第一次运行此代码时创建的。您正在调用file.Move()
,其中包含源文件名的完整路径和目标文件名的相对路径。相对文件路径相对于当前工作目录,而不是源文件路径。我希望当前工作目录中存在一个stackoverflow
文件,很可能是在您第一次运行此代码时创建的。由于您的目标是重命名,我建议使用一个充满文件的测试文件夹,而不是使用零碎的方法。看看这样做是否有帮助:
private void Rename(string prefix, string filepath, string suffix)
{
//i don't use prefix suffix yet to make sure if my function works
DirectoryInfo d = new DirectoryInfo(filepath);
FileInfo[] file = d.GetFiles();
try
{
foreach (FileInfo f in file )
{
f.MoveTo(@filepath + @"\" + prefix + f.Name.Insert(f.Name.LastIndexOf('.'),suffix));
}
}
catch (Exception e)
{
cmd.cetakGagal(e.ToString(), title);
}
cmd.cetakSukses("Rename Success", title);
}
另一方面,在提交文件名和更改之前,使用listview显示文件名和更改将有助于防止不必要的更改。由于您的目标是重命名,我建议使用充满文件的测试文件夹,而不是使用零碎的方法。看看这样做是否有帮助:
private void Rename(string prefix, string filepath, string suffix)
{
//i don't use prefix suffix yet to make sure if my function works
DirectoryInfo d = new DirectoryInfo(filepath);
FileInfo[] file = d.GetFiles();
try
{
foreach (FileInfo f in file )
{
f.MoveTo(@filepath + @"\" + prefix + f.Name.Insert(f.Name.LastIndexOf('.'),suffix));
}
}
catch (Exception e)
{
cmd.cetakGagal(e.ToString(), title);
}
cmd.cetakSukses("Rename Success", title);
}
另外,在提交文件名和更改之前,使用列表视图显示文件名和更改将有助于防止不必要的更改。是的,我确信只有一个文件,请查看我更新的屏幕截图。我可以在不移动em的情况下重命名同一文件夹吗?@Cignitor如果在foreach
循环中设置断点,调试会告诉你什么。具体来说,看看文件
和文件
是的,我确定只有一个文件,请查看我更新的屏幕截图。我可以在不移动em的情况下重命名同一文件夹吗?@Cignitor如果在foreach
循环中设置断点,调试会告诉你什么。具体地说,查看文件
和文件
自己一步一步地检查代码,以找到出错时它试图从/移动到的文件。希望潜在的问题和解决方案会很明显。您没有使用前缀和后缀参数。如果你真的在方法中使用它们,你会神奇地看到你的问题得到了解决。你自己一步一步地检查代码,找到它出错时试图从/移动到的文件。希望潜在的问题和解决方案会很明显。您没有使用前缀和后缀参数。如果你真的在方法中使用它们,你会神奇地看到你的问题得到了解决。