C# 文件.移动问题:进程无法访问文件异常
运行此newFile方法时出现错误:C# 文件.移动问题:进程无法访问文件异常,c#,C#,运行此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");
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”代码的主体注释掉,那么它将无误地运行,但是我需要手动归档。如果我注释掉文件.Move
部分,它运行正常,因此这就是罪魁祸首
如何释放文件以便移动它?试试这个
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);
}
}
试试这个
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);
}
}
您需要使用文件。使用文件后关闭。创建,这就是为什么您会收到一个错误,说文件被另一个进程使用。尝试将此行添加到代码中:
try
{
File.Create(logpath + @"log_file_current.txt").Close(); // Notice the .Close() here
logFile.log("logFile created.");
}
来源:您需要使用文件。在使用文件后关闭。创建,这就是为什么您会收到一个错误,说文件被另一个进程使用。尝试将此行添加到代码中:
try
{
File.Create(logpath + @"log_file_current.txt").Close(); // Notice the .Close() here
logFile.log("logFile created.");
}
来源:这不是出错的部分。正如我在文章中所说的,是File.Move部分崩溃了,而不是出错的部分。正如我在文章中所说,是File.Move部分崩溃了。这显然是一个文件锁定问题,正如你试图调用“log”和“newFile”方法一样。因此,请解释您试图通过“newFile”方法实现什么。如果您需要归档属于“前一个日期”的日志,则需要有一种机制来检查当前日期和前一个日期之间的差异。您正在处理许多与错误无关的内容。苏欧。。。。谢谢?但说真的,否决票怎么了?我编写了自己的代码,并明确了我的问题。这完全是为了什么。如果我知道c#,我就不会在这里了。这显然是一个文件锁定问题,正如你试图调用“log”和“newFile”方法一样。因此,请解释您试图通过“newFile”方法实现什么。如果您需要归档属于“前一个日期”的日志,则需要有一种机制来检查当前日期和前一个日期之间的差异。您正在处理许多与错误无关的内容。苏欧。。。。谢谢?但说真的,否决票怎么了?我编写了自己的代码,并明确了我的问题。这完全是为了什么。如果我知道c#我就不会在这里了。这可能会解决问题。您也可以在使用中包装File.Create()。问题是File.Create()调用在文件上创建一个锁(它返回一个FileStream),然后调用logFile.log尝试再次打开它。你可以在stacktrace中看到。谢谢,这很有效。这是我的第一个c#所以我正在学习诀窍。很高兴我能帮上忙!这可能会解决问题。您还可以使用包装将File.Create()包装到文件中。问题是File.Create()调用在文件上创建一个锁(它返回一个FileStream),然后调用logFile.log尝试再次打开它。你可以在stacktrace中看到。谢谢,这很有效。这是我的第一个c#所以我正在学习诀窍。很高兴我能帮上忙!