2016-05-12 169 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>和將產生每一行。所以在循環中,文件仍然是打開的。假定文字在循環中。