gpt4 book ai didi

c# - 重命名文件自己打开

转载 作者:可可西里 更新时间:2023-11-01 10:08:47 24 4
gpt4 key购买 nike

我的程序正在将数据记录到一个文件中,同时用户界面实时显示传入的数据。如果计算机/程序/操作系统/任何关闭,我希望记录的数据在一两秒内存储在磁盘上。数据以至少 100 次/秒的速度传入。

我希望用户能够在日志记录处于事件状态时为日志文件指定一个新名称。问题是我无法在文件打开时更改文件名,即使它是通过相同的进程进行的。

测试用例:

string fileName1 = "test.txt";
string fileName2 = "test2.txt";

using (StreamWriter sw = new StreamWriter(new FileStream(fileName1, FileMode.Create)))
{
sw.WriteLine("before");
File.Move(fileName1, fileName2); //<<-- IOException - The process cannot access the file because it is being used by another process.
w.WriteLine("after");
}

那么,当同一个进程正在打开文件的流时,如何重命名该进程的文件?

最佳答案

您应该关闭第一个流,重命名文件,然后重新打开流:

using (StreamWriter sw = new StreamWriter(new FileStream(fileName1, FileMode.Create)))
{
sw.WriteLine("before");
sw.Close();
}

File.Move(fileName1, fileName2);

using (StreamWriter sw = new StreamWriter(new FileStream(fileName2, FileMode.Append)))
{
sw.WriteLine("after");
}

关于c# - 重命名文件自己打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557577/

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