我有一个循环,它扫描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();
答案 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>
并将产生每一行。所以在循环中,文件仍然是打开的。假设写作是在循环内。