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 回答