2011-09-14 17 views
1

私は再帰的に一連のディレクトリを作成しようとしていますが、特定のディレクトリ名には上記の例外をスローする ':'文字が含まれています。私はこれを避ける方法があると思っていましたか?CでCreateDirectoryを使用してNotSupportedExceptionを回避する

foreach (TagLib.File tagFile in tagFiles) 
     { 
      GetInfo(tagFile, targetDir); 

      if (!Directory.Exists(TargetFullPath)) 
      { 
       Directory.CreateDirectory(TargetFullPath); 
       System.IO.File.Copy(FilePath, TargetFullPath + "\\" + tagFile.Tag.Title + TargetExt); 
      } ... 
'TargetFullPath' =

"G:\ Users \ユーザージョン\デスクトップ\ musictest \ジャーニー\ジャーニー:グレイテストヒッツ"

多くの感謝を以下 は、私が使用しているコードのスニップです:)

+3

ディレクトリ名またはファイル名に ':'は使用できません。それはそうです。回避策はありません。 '_'やそのようなもので置き換えてください。 –

+0

この質問には完全に関連していませんが、パス文字列を作成するときは[Path.Combine](http://msdn.microsoft.com/en-us/library/system.io.path.combine.aspx)を使用するようにしてください。 –

答えて

1

コロンは使用できない文字の1つですが、簡単に置き換えることができます。その他の違法があるかもしれないと仮定すると、

Path.Combine(Path.GetDirectoryName(TargetFullPath),Path.GetFileName(TargetFullPath).Replace(":","_")); 

:また、ファイル名だけの部分に文字を置き換えることを確認してください(あなたがファイルパスの残りの部分を構成するバックスラッシュを一掃していない)、あなたが使用できるために、 (see this list)の文字を使用すると、Regexのような堅牢なものが必要になります。

+2

も、+は使用しないでください。 Path.Combineを使用してください – bryanmac

+0

ありがとうbryanmac、私は私の答えを編集しました。 –

関連する問題