不能删除文件后的临时文件.用c#复制
本文关键字:复制 临时文件 删除 文件 不能 | 更新日期: 2023-09-27 18:12:20
将文件复制到临时目录后,由于UnauthorizedAccessException异常,我无法删除副本。这里的想法是获得文件的副本,压缩它,然后删除副本,但在删除File.Copy
和File.Delete
之间的所有代码后,我仍然得到异常。退出程序可以释放锁,并允许我删除副本而不会出现问题。
是否有一种方法来复制而不会导致这种持久锁定(并保留文件元数据,如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"
文件是否为只读。
根据你的评论,这可能是你可以复制但不能删除
的原因try with
File.SetAttributes(tempfile, FileAttributes.Normal);
File.Delete(tempfile);
我看到你已经找到了答案,但我还是要添加这个供参考;对您来说,另一种可能的方法是在内存流中创建副本,而不是将文件复制到硬盘驱动器。
使用DotNetZip库,您可以这样做:using (var ms = new MemoryStream())
{
using (var zip = new ZipFile())
{
zip.AddEntry(fileName, data);
zip.Save(ms);
}
}