2013-10-30 34 views
0

我想创建C#质量文件更名,这里是我的UI enter image description hereC#质量文件更名

我创建tes文件夹的tes里面有一个文件,该文件是1.txt

我想创建我的程序添加前缀和后缀的文件,因此1.txt将成为 prefix1suffix

但当时虽然只有一个文件上我得到一个错误 enter image description here

有人说file already existtes文件夹,这是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文件夹,没有什么在tes文件夹中,除了1.txt

enter image description here

+0

通过自己的代码来找到它试图从哪个文件移动到哪个文件出现错误。希望潜在的问题和解决方案将是显而易见的。 –

+0

那么你没有使用前缀和后缀参数。你如何在方法中实际使用它们,你会奇迹般地看到你的问题得到解决。 – Arran

回答

0

以来,经过第一次运行之后,“计算器”作为文件形式存在上面的代码将会给你的错误。在调用File.Move之前,请确保您检查目标文件是否存在(使用File.Exists)。

1

您的File.Move正在将它们全部更改为StackOverflow未使用前缀和后缀。如果你只在目录中有一个文件,它不应该是一个问题。你确定只有一个文件?

public static void Move(
    string sourceFileName, 
    string destFileName 
) 

望着这answer可能是线索,您指定为目标文件的相对路径。为了得到当前工作目录,看到GetCurrentDirectory

的sourceFileName和destFileName参数允许指定 相对或绝对路径信息。相对路径信息是 解释为相对于当前工作目录。

File.Move(f.FullName,"stackoverflow"); 

string fileName = f.Name.Replace(f.Extenstion,string.Empty); 
string newFileName = string.Format("{0}{1}{2}",prefix,fileName,suffix); 
string newFileWithPath = Path.Combine(f.Directory,newFileName); 
if (!File.Exists(newFileWithPath)) 
{ 
    File.Move(f.FullName,newFileWithPath); 
} 
+0

是的,我相信只有1个文件,检查我更新的屏幕截图。我可以让它重命名相同的文件夹,而不移动他们? – Cignitor

+0

@Cignitor如果你在'foreach'循环中放置一个断点,你的调试告诉你什么。具体来说,看'文件'和'文件' – Harrison

+0

文件路径显示'副本1.txt' – Cignitor

3

你是一个完整的路径呼吁File.Move()sourceFileName和相对路径为您destFileName你应该改变。相对文件路径是相对于当前工作目录而不是源文件路径。我期望stackoverflow文件存在于当前工作目录中,很可能是您第一次运行此代码时创建的。

+0

好抓和+1 – Harrison

0

由于您的目标是重命名,我建议使用充满文件的测试文件夹而不是使用零碎的方法。使用列表视图来显示文件名,他们正致力于将有助于防止不必要的变化改变之前的

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); 
    } 
在一个侧面说明

:看看是否有这样的帮助。