0

何千ものサブディレクトリがあるディレクトリをトラバースしようとしています。各サブディレクトリには .nfo ファイルがあります。

D:\Test\
D:\Test\Dir1\
D:\Test\Dir1\file1.nfo
D:\Test\Dir2\
D:\Test\Dir2\file2.nfo
D:\Test\Dir3\
D:\Test\Dir3\file3.nfo

Xdocument を使用して情報を解析していますが、ソース .nfo ファイルと同じ場所に新しいファイルを作成する必要があります。

D:\Test\
D:\Test\Dir1\
D:\Test\Dir1\file1.nfo
NEW FILE: D:\Test\Dir1\info.nfo
D:\Test\Dir2\
D:\Test\Dir2\file2.nfo
NEW FILE: D:\Test\Dir2\info.nfo
D:\Test\Dir3\
D:\Test\Dir3\file3.nfo
NEW FILE: D:\Test\Dir3\info.nfo

基本的な部分はすべて揃っていると思いますが、ソース ファイルと同じ場所に新しいファイルを作成する方法がわかりません。

これが私がこれまでに持っているものです:

string strID = null;
string[] filesNFO = Directory.GetFiles(@"D:\Test\", "*.nfo", SearchOption.AllDirectories); 

foreach(string file in filesNFO)  
{
     var doc = XDocument.Load(file);
     strID = doc.Root.Element("id") == null ? "" : doc.Root.Element("id").Value;

     FileStream fs = new FileStream("info.nfo", FileMode.Create);
     StreamWriter info = new StreamWriter(fs);
     info.Write("http://powerhostcrm.com/" + strID);
     info.Close();
} 
4

2 に答える 2

2

欠落している部分は、新しいファイルを保存する場所です。その場合は、fileからfilesNFOを取得してディレクトリを取得します。using ステートメントですべてをラップすることもお勧めします。

string strID;
string[] filesNFO = Directory.GetFiles( @"D:\Test\", "*.nfo", SearchOption.AllDirectories );

foreach( string file in filesNFO )
{
    var doc = XDocument.Load( file );
    strID = doc.Root.Element( "id" ) == null ? "" : doc.Root.Element( "id" ).Value;

    string directory = Path.GetDirectoryName( file );
    string infoNfo = Path.Combine( directory, "info.nfo" );

    using( var fs = new FileStream( infoNfo, FileMode.Create ) )
    using( var info = new StreamWriter( fs ) )
    {
        info.Write( "http://powerhostcrm.com/" + strID );
    }
}
于 2012-07-12T00:07:48.513 に答える
1
foreach(string file in filesNFO)  
{
   FileInfo info = new FileInfo(file);
   string current_dir = info.DirectoryName;
   string newFileBane = current_dir + @"\newfilename.nfo";

   //open filestream
   //write to filestream
}
于 2012-07-12T00:08:17.327 に答える