2017-11-06 13 views
-1

アレイ内の各ファイルの絶対パスと名前(拡張子なし)の両方を取得する方法を教えてください。私のコードは、私が望むようxmlNameを得るが、xmlLocにnullを取得ファイルの拡張子なしで絶対パスと名前の両方を取得するにはどうすればよいですか?

string [email protected]"D:\Practice\2017"; 
DirectoryInfo myPathInfo = new DirectoryInfo(myPath); 
FileInfo[] myXmlFiles = myPathInfo.GetFiles("*.xml",SearchOption.AllDirectories); 
    foreach (FileInfo xmlFile in myXmlFiles) 
    { 
     var xmlName = Path.GetFileNameWithoutExtension(xmlFile.Name); 
     var xmlLoc=Path.GetFullPath(xmlFile.Name); 
    } 

のようなものです。 これを修正するにはどうすればよいですか?

+2

は何ですか'xmlFile.Name'の値? – vbnet3d

+3

'FileInfo'には、https://msdn.microsoft.com/en-us/library/system.io.fileinfo(v=vs.110).aspxを見る' DirectoryName'プロパティがあります。私はそれがあなたが望むことをしていると思う(私は100%確信していないが)。 – Chris

+0

@Chrisは 'DirectoryName'にファイルの完全なパスを与えますか? –

答えて

0

DirectoryNameプロパティを使用してFileInfoクラスを使用します。上記のプロパティはあなたが望むものだけでなくその一部をあなたに完全に与えるわけではないので、Path.Combineも必要になるかもしれません。これらのプロパティを使用して必要なコードをまとめます。

1

Path.GetFullPathはアプリケーションコンテキストに依存し、その混乱につながるだけでファイル名を渡す:

この方法は、完全パスを修飾するために、現在のディレクトリと現在のボリューム情報を使用しています。 パスにのみファイル名を指定すると、GetFullPathは現在のディレクトリの完全修飾パスを返します。

.FullNameプロパティを使用しFileInfoオブジェクトからXMLファイルの元のパスを取得するには:

foreach (FileInfo xmlFile in myXmlFiles) 
{ 
    var xmlName = Path.GetFileNameWithoutExtension(xmlFile.Name); 
    var xmlLoc= xmlFile.FullName; 
} 

xmlLocは現在、XMLファイルの完全なパスが含まれます:D:\Practice\2017\someXml.xml

関連する問題