不能删除文件后的临时文件.用c#复制

本文关键字:复制 临时文件 删除 文件 不能 | 更新日期: 2023-09-27 18:12:20

将文件复制到临时目录后,由于UnauthorizedAccessException异常,我无法删除副本。这里的想法是获得文件的副本,压缩它,然后删除副本,但在删除File.CopyFile.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#复制

检查"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);
    }
}