9

目前在 Windows 7 上的 Visual Studio 2010 .NET 4 中开发 C# WinForms 应用程序。

首先,我使用 File.ReadAllBytes() 方法从文件中读取字节流。然后,当尝试将文件写回时,使用 WriteAllBytes 方法时出现访问路径被拒绝错误。

我尝试传入文字路径 Environment.SpecialFolder.ApplicationData、Path.GetTempPath(),但都给我提供了同样的错误。

我检查了这些文件夹的权限,还尝试以管理员模式启动程序,但没有成功。

4

3 回答 3

11

确保在使用File.WriteAllBytes()包含文件名时指定整个路径。

File.WriteAllBytes()不能写入一般目录,它必须写入特定文件。

希望这可以帮助。

于 2018-01-17T19:07:28.700 回答
3

在 windows7 中,c: 存在安全问题。如果您修改了 D: 的路径,则不会出现拒绝访问问题。

尝试使用 Path.GetTempPath() 执行以下示例代码,它将成功执行。

    static void Main(string[] args)
    {
        string path = Path.GetTempPath();
        byte[] binaryData;
        string text = "romil123456";
        using (MemoryStream memStream = new MemoryStream(Encoding.ASCII.GetBytes(text)))
            {
                binaryData = memStream.ToArray();
            }
            System.IO.File.WriteAllBytes(@path + "\\words123.txt"    , binaryData);
        }
    }

Environment.SpecialFolder.ApplicationData 提供文件夹名称,而不是提供该文件夹的完整路径。因此,当您在定义的路径中使用它来写入文件时,会在本地应用程序路径下搜索此文件夹。

于 2012-04-28T06:26:45.523 回答
2

你确定文件还没有被锁定吗?如果您打算从文件中读取和写入字节,您可能需要考虑使用 Stream 类(例如FileStream),这样做的好处是您将锁定文件并且同时没有其他应用程序可以访问该文件.

本主题的代码示例:

FileStream fileStream = new FileStream(
  @"c:\words.txt", FileMode.OpenOrCreate, 
  FileAccess.ReadWrite, FileShare.None);
于 2012-04-27T12:22:52.800 回答