无法写入文件c#

时间:2016-05-12 12:53:28

标签: c#

我有一个循环,它扫描xml文件,成功时它会循环并操作字符串。问题是我无法写帖子,因为我收到了警告文件。我该如何解决这个问题?

循环:

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

2 个答案:

答案 0 :(得分:0)

using指令中使用它:

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

如果错误仍然存​​在,请尝试将string保存到变量中,并在foreach次迭代范围之外使用此写入过程。 (由于foreach迭代逐行读取文件,因此表示文件已打开。)

答案 1 :(得分:0)

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

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

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

File.ReadLines()返回IEnumerable<string>并将产生每一行。所以在循环中,文件仍然是打开的。假设写作是在循环内。