需要从文件中提取路径信息以在同一位置创建新文件

时间:2012-07-11 23:47:41

标签: c# filesystems

我正在尝试遍历包含数千个子目录的目录。在每个子目录中都有一个.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();
} 

2 个答案:

答案 0 :(得分: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 );
    }
}

答案 1 :(得分: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
}