2012-01-21 21 views
1

foldernameにその名前の他のフォルダがある場合、どのように変更できますか?名前が既に存在する場合は変更する

このコードは、新しいフォルダを作成することができますが、あれば「newfolder1」に「新規フォルダ」からフォルダ名を変更することができませんでし

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"); 
     } 
    } 

:(私は以下のようにしてみましたが、それはうまくいきませんでした"新規フォルダ" は既に存在し

+0

ikはどこに割り当てられていますか? –

+0

foldernameはUIからの各クリックで取得され、 'if'ではフォルダ名は変更されますが、何も作成されません。 –

+1

thenブランチでfoldernameのフォルダを作成しません。 –

答えて

5

を、私はあなたが「foo」という名前のフォルダが、「foo」という名前のフォルダを作成しようとすると何かをしたいと仮定していますが、あなたの欲しい既に存在しています"foo1"と呼ばれる新しいフォルダ?その場合は、フォルダが存在するかどうかを検出し、新しい名前を作成する必要があります。あなたはこれがあなたの新しいパスがまだ存在していないことを保証し、それはあなたがあなたのフォルダの一意の名前を取得するようになりますない場合、この

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

Directory.CreateDirectory(newPath); 

ような何かを行うことができます。

あなたの例では、私はあなたが独自のディレクトリを作成しようとしていたが、あなたはすでにそこnewFolder1を持っている場合、何が起こるのthatsと思うあなたは、変数

ik 

で何をしていたかわかりませんでしたか?これは、チェックを続けるためにwhileループを使用する理由です。

+0

ありがとうanton!このコードは私を助けました。 –

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

申し訳ありません私はフォルダの名前を変更したくない!このようなオブジェクト名がすでにシステム/データベースに存在する場合、新しく作成するオブジェクトのオブジェクト名を変更する必要があります。 –

関連する問題