IO 文件无法访问正在使用的文件
本文关键字:文件 访问 IO | 更新日期: 2023-09-27 18:34:28
嗨,伙计们,我正忙着编写一个小型控制台应用程序,该应用程序将拾取文本文件并邮寄它们,但是在邮寄它们之后,邮寄的文本文件必须移动到备份文件夹文件...问题是我在尝试删除文件时收到此错误,但我知道该文件未被我使用。
进程无法访问文件"C:''Files''Configs''Errorlog.txt,因为它正被另一个进程使用。
我使用了两种方法 file.move 和 file.copy,然后尝试删除它仍然不起作用,我得到同样的错误请协助
class Program
{
static void Main(string[] args)
{
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("******");
mail.From = new MailAddress("*********");
mail.To.Add(ConfigurationSettings.AppSettings["EmailReceiver"]);
mail.Subject = "Test HHjhihH- Mail";
mail.Body = "TestMail";
string folder = ConfigurationSettings.AppSettings["ConfigPath"];
try
{
string[] txtfiles = Directory.GetFiles(folder, "*.txt");
foreach (var txtfile in txtfiles) //FileInfo file in Files )
{
if (!File.Exists("ConfigPath"))//txtfile.Length != 0)
{
mail.Attachments.Add(new System.Net.Mail.Attachment(txtfile));
Console.WriteLine("sending Config File....");
}
else
{
Console.WriteLine("No files in the directory");
return;
}
}
}
catch (Exception)
{
Console.WriteLine("Incorrect Path" + ConfigurationSettings.AppSettings["ConfigPath"] + ",does not exist");
return;
}
SmtpServer.Port = ****;
SmtpServer.Send(mail);
Console.WriteLine("Message Sent");
}
{
string fileName = string.Empty;
fileName = "Errorlog.txt";
string sourceFile = @"C:'Files'Configs'" + fileName;
string destinationFile = @"C:'Files'BackupConfigs'" + fileName;
// To move a file or folder to a new location:
**//error PROBLEM OCCRURS HERE**
File.Copy(sourceFile, destinationFile);
// copies the file but wont delete original file
File.Delete(@"C:'Files'Configs'Errorlog.txt");
// when i use File.move(sourceFile, destinationFile); i get same error
}}
您需要将new System.Net.Mail.Attachment(txtfile)
的结果分配给变量。
var attachment = new System.Net.Mail.Attachment(txtfile);
发送邮件后,必须处理附件:
attachment.Dispose();
它使文件保持打开状态。
我认为每次尝试使用文件访问时都必须使用使用子句。如果不这样做,则在运行应用程序一次后,该文件将在后台使用!
我想Directory.GetFiles(folder, "*.txt")
提供了纯文件名。因此,要么采用绝对文件名,要么确保文件位于执行目录中(调试、发布等(。
SmtpServer.Port = ****;
SmtpServer.Send(mail);
Mail.Dispose();
Console.WriteLine("Message Sent");
发送邮件后,我使用了Mail.dispose((,它解决了我可以在发送后删除文件的问题。感谢您的投入