2012-01-21 34 views
1

如果存在其他具有該名稱的其他文件夾,如何更改foldername如果已經存在,則更改名稱

我想在下面的方式,但它沒有工作:(

private int ik; 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     string folderpath = @"C:\Users\nouser\Documents\Visual Studio 2010\WebSites\folders"; 
     string foldername = TextBox1.Text; 
     string newPath = System.IO.Path.Combine(folderpath, foldername); 
     if (Directory.Exists(Path.Combine(folderpath, foldername))) 
     { 
      foldername = foldername + Convert.ToString(ik); 
      ik = ik + 1; 
     } 
     else 
     { 
      System.IO.Directory.CreateDirectory(newPath); 
      Response.Write("Folder created"); 
     } 
    } 

這個代碼能夠創建一個新的文件夾,但不能將文件夾名稱從「newfolder」如果改爲「newfolder1」 「newfolder」 已存在

+0

ik被分配在哪裏? –

+0

從每次點擊UI中檢索到文件夾名稱,並在'如果'您正在更改文件夾名稱但不創建任何東西。 –

+1

您不要在當時的分支中創建foldername文件夾。 –

回答

5

我假設你想去的地方,如果你嘗試創建一個名爲「foo」的文件夾的東西,但一個文件夾名爲「foo」已經存在,你希望你的新文件夾被稱爲「foo1」?如果是這樣,您必須檢測文件夾是否存在,併爲其創建新名稱。你可以做這樣的事情

var count = 1; 
var originalPath = newPath; 
while(Directory.Exists(newPath)){ 
    newPath = originalPath + count; 
    count++; 
} 

Directory.CreateDirectory(newPath); 

這可以確保你的新的路徑已不存在,如果它可以確保您的文件夾獲得一個唯一的名稱。

在你的榜樣,我不知道你的變量

ik 

我想,你正試圖創造一個獨特的目錄,多數民衆贊成在做什麼,但如果你已經有一個newFolder1那裏會發生什麼?這就是爲什麼你應該使用while循環來保持檢查

+0

謝謝安東!這段代碼幫助了我。 –

2

使用system.IO.Directory移動

System.IO.Directory.Move("newfolder","newfolder1"); 

欲瞭解更多信息,請參閱MSDN:

http://msdn.microsoft.com/en-us/library/system.io.directory.move.aspx

+0

對不起!我不想重命名文件夾!如果這樣的對象名稱已經存在於系統/數據庫中,我需要更改新創建的對象的對象名稱。 –

1

使用移動這樣的:

System.IO.Directory.Move("old name", "new name"); 
+0

對不起!我不想重命名文件夾!如果這樣的對象名稱已經存在於系統/數據庫中,我需要更改新創建的對象的對象名稱。 –

相關問題