运行这个newFile方法时出错:
class logFile
{
public static string logpath = @"D:\Program Files\CustomApps\DataFeed\";
public static void log(string log)
{
string timestamp = DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss");
Console.WriteLine(timestamp + log);
File.AppendAllText(logpath + @"log_file_current.txt", timestamp + log + Environment.NewLine);
}
public static void newFile()
{
if (File.Exists(logpath + @"log_file_current.txt") == true)
{
File.Move(logpath + @"log_file_current.txt"
, logpath + @"log_files\log_file_ORPHANED_" + DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss") + ".txt");
}
try
{
File.Create(logpath + @"log_file_current.txt");
logFile.log("logFile created.");
}
catch(System.NotSupportedException ex)
{
Console.WriteLine(ex.Message);
}
}
}
我收到以下错误:
如果我评论“newFile”代码的主体,那么它运行没有错误,但我需要手动存档。如果我注释掉File.Move
部分,那么一切都运行正常,这就是罪魁祸首。
如何释放文件以便移动文件?
答案 0 :(得分:3)
使用 File.Create 后,您需要使用 File.Close ,这就是为什么您收到错误消息,说明该文件是被其他进程使用< / em>的。尝试将此行添加到您的代码中:
try
{
File.Create(logpath + @"log_file_current.txt").Close(); // Notice the .Close() here
logFile.log("logFile created.");
}
答案 1 :(得分:0)
试试这个
public static void log(string log)
{
string timestamp = DateTime.Now.ToString("yyyy_MM_ddTHH_mm_ss") + ": ";
Console.WriteLine(timestamp + log);
using (StreamWriter sw = File.AppendText(logpath + @"log_file_current.txt"))
{
sw.WriteLine(timestamp + log);
}
}