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

C# 需要从文件中提取路径信息以在同一位置创建新文件,c#,filesystems,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文件

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();
} 
缺少的部分是保存新文件的位置。如果是这种情况,请从
文件信息
中获取
文件
,然后获取目录。我还建议使用语句包装所有内容:

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 );
    }
}
缺少的部分是保存新文件的位置。如果是这种情况,请从
文件信息
中获取
文件
,然后获取目录。我还建议使用语句包装所有内容:

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 );
    }
}

目录“D:\Test\”不是吗?不,在D:\Test\的子目录中有nfo文件。我需要在每个子目录中创建info.info文件,使用从这些子目录中的nfo解析的信息。我在我的帖子中添加了更多的细节,希望能有所帮助。那么所有的.nfo文件都位于D:\Test和子目录中,对吗?还有,为什么你要用XDocument阅读这个文件?我不确定我是否理解这个问题,但是你检查过
FileInfo
类了吗?目录“D:\Test\”不是吗?没有,在D:\Test\的子目录中有nfo文件。我需要在每个子目录中创建info.info文件,使用从这些子目录中的nfo解析的信息。我在我的帖子中添加了一些更详细的信息,希望能有所帮助。那么所有的.nfo文件都存在于D:\Test和子目录中,对吗?还有,为什么你要用XDocument阅读这个文件?我不确定我是否理解这个问题,但是你检查过
FileInfo
类了吗?没有必要创建
FileInfo
对象;您可以只使用
Path.GetDirectoryName
方法。查看我的答案。无需创建
FileInfo
对象;您可以只使用
Path.GetDirectoryName
方法。看看我的答案。