gpt4 book ai didi

c# - 打开刚刚关闭的文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:37:22 24 4
gpt4 key购买 nike

我正在编写一个处理文本文件的应用程序。我函数的前半部分读取文本文件,而后半部分写入(可选)同一个文件。尽管我在打开 StreamWriter 对象之前在 StreamReader 对象上调用了 .close(),但我仍然得到一个 IOException: The process cannot access the file "file.txt"because it is being used by另一个进程。

如何强制我的程序在继续之前释放文件?

public static void manipulateFile(String fileIn, String fileOut,String obj)
{
StreamReader sr = new StreamReader(fileIn);
String line;
while ((line = sr.ReadLine()) != null)
{
//code to split up file into part1, part2, and part3[]
}
sr.Close();

//Write the file
if (fileOut != null)
{
StreamWriter sw = new StreamWriter(fileOut);
sw.Write(part1 + part2);
foreach (String s in part3)
{
sw.WriteLine(s);
}
sw.Close();
}

}

最佳答案

您发布的代码运行良好 - 我没有看到异常。

然而,像这样手动调用 Close() 并不是一个好主意 - 如果抛出异常,您对 Close() 的调用可能永远不会进行。您应该使用 finally block ,或者更好:a using statement .

using (StreamReader sr = new StreamReader(fileIn))
{
// ...
}

但您遇到的实际问题可能不是此方法所特有的,而是忘记在 using block 中正确关闭文件的一般问题。我建议您检查所有代码库并查找代码中使用 IDisposable 对象的所有位置并检查是否正确处理它们即使可能存在异常 .

关于c# - 打开刚刚关闭的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com