2016-05-12 162 views
0

我有一个循环扫描xml文件,当它成功进入循环和操纵字符串。问题是我不能写帖子,因为我得到了使用中的警告文件。我该如何解决?无法写入文件c#

循环:

var dir = new DirectoryInfo(@"C:\Projektdata"); 
foreach (var file in dir.EnumerateFiles("*.xml", SearchOption.AllDirectories)) 
{    
    foreach (string line in File.ReadLines(file.DirectoryName + @"\" + file)) 
    { 
     . . . . 

科写入文件:

string directoryPath = file.DirectoryName + @"\" + file; 

StreamWriter writer = new StreamWriter(directoryPath); 

writer.WriteLine(source);            

writer.Close(); 

回答

0

使用它在using指令:

using(var writer = new StreamWriter(directoryPath)) 
{ 
    writer.WriteLine(source);            
} 

如果仍然出现错误,尽量节省string写入一个变量,并使用这个写作过程在的范围之外迭代。 (由于foreach迭代逐行读取文件,所以它表示文件已打开。)

0

您无法写入打开的文件。您已经打开相同的文件进行阅读。

File.ReadLines(file.DirectoryName + @"\" + file); 

string directoryPath = file.DirectoryName + @"\" + file; 
StreamWriter writer = new StreamWriter(directoryPath); 

File.ReadLines()被返回一个IEnumerable<string>和将产生每一行。所以在循环中,文件仍然是打开的。假定文字在循环中。