这里是初学者,我在读取和写入现有的.txt文件时遇到了一些问题。我的总体目标是接收包含方程(由数字和+、-、*、/、(,)运算符指定)的字符串,通过我构建的计算器运行这些方程(请参阅Calculate方法),然后将结果写入同一文件。假设我的文件包含以下行:
1+8
sin(90)+9
然后,我应该写入该文件,所以它看起来像这样:
1+8=9
sin(90)+9=10
等等。
到目前为止,我得到的是:
List<string> lines = new List<string>();
List<string> results = new List<string>();
foreach (string line in File.ReadLines(@"C:Users...file.txt"))
{
string result = Calculate(line).ToString();
}
现在我真的不知道该怎么办。我一直在尝试使用File.WriteAllLines和File.AppendText,但出现了一个错误,当前流似乎已被占用。
有什么建议吗?谢谢
从File.ReadLines
切换到File.ReadAllLines
。
在后台,ReadLines
使用Streams在您请求时读取文件中的每一行。然而,为了做到这一点,它需要锁定文件以防止其他访问。您无法写入当前正在读取的文件(即在foreach
循环内)。
ReadAllLines
将所有线路加载到存储器中。然后你可以自由地覆盖原始文件,因为你已经吸收了所有你需要的信息。
作为替代方案,您可以继续使用ReadLines
,只需确保将结果写入不同的文件即可。