将文件复制到临时目录后,我无法删除副本,因为 UnauthorizedAccessException异常(exception)。这里的想法是获取文件的副本,将其压缩然后删除副本,但是在删除 File.Copy
之间的所有代码之后和 File.Delete
我仍然得到异常(exception)。退出程序会释放锁并允许我毫无问题地删除副本。
有没有一种方法可以在不导致这种持久锁定的情况下进行复制(并像 LastModified 一样保留文件元数据)?或者释放锁的方法? File.Copy
完成后是否应该锁定复制的文件?
我正在使用面向 .NET Framework 4.0 的 Visual C# 2010 SP1。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Xml;
namespace Test
{
class Program
{
static void Main(string[] args)
{
String FileName = "C:\\test.txt";
// Generate temporary directory name
String directory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
// Temporary file path
String tempfile = Path.Combine(directory, Path.GetFileName(FileName));
// Create directory in file system
Directory.CreateDirectory(directory);
// Copy input file to the temporary directory
File.Copy(FileName, tempfile);
// Delete file in temporary directory
File.Delete(tempfile);
}
}
}
最佳答案
检查您的 "C:\\test.txt"
文件是否只读。
根据您的评论,这可能是您可以复制但无法删除的原因
试试下面的
File.SetAttributes(tempfile, FileAttributes.Normal);
File.Delete(tempfile);
关于c# - 无法在 C# 中的 File.Copy 后删除临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16394880/