繁体   English   中英

我可以覆盖正在使用的文件吗? (C#)

[英]Can I overwrite a file that's in use? (C#)

我正在尝试覆盖文件的内容。 在大多数情况下都使用该文件。 我知道如何在Java中执行此操作,但是我不确定如何在C#中执行此操作。 那就是我目前拥有的:

    public bool ByteArrayToFile(string fileName, byte[] byteArray)
    {
        try
        {
            using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
            {
                fs.Write(byteArray, 0, byteArray.Length);
                return true;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception caught in process: {0}", ex);
            return false;
        }
    }

我正在尝试将字节数组写入文件。 我使用WebClient从URL获取字节数组。 使用该文件时,我得到一个IOException,它表示我无法访问该文件,因为该文件正在被另一个进程使用。 在Java中,我会这样使用commons-io:

FileUtils.copyInputStreamToFile(new URL(url).openStream(), target);

上面的方法对我有用,但是我似乎无法在C#中复制它。 有办法吗?

您不能覆盖正在使用的文件并被Windows中的另一个进程锁定。 您需要找到具有文件句柄的进程并终止该进程才能释放该句柄。

如果您正在编写或控制访问文件的程序/进程,则可以考虑使用类似System.IO的以下内容:

FileStream.Lock- '防止其他进程读取或写入FileStream'

FileStream.Unlock- '允许其他进程访问以前锁定的文件的全部或部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM