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