【问题标题】:FileStream not letting me create file on local machine?FileStream 不允许我在本地机器上创建文件?
【发布时间】:2010-10-25 13:28:42
【问题描述】:

我正在使用 FileStream 将 FTP 服务器的信息下载到我的 C:\ 驱动器上的目录中。出于某种原因,即使我什至尝试将目录权限设置为“所有人”访问权限,它还是给了我这个例外:

System.UnauthorizedAccessException:对路径“C:\tmpfolder”的访问被拒绝”

这是为什么?这是我的代码的摘录。

byte[] fileData = request.DownloadData(dataMap.GetString("ftpPath") + "/" + content);
file = new FileStream(@"C:\tmpfolder", FileMode.Create, FileAccess.Write);
downloadedlocation = file.ToString();
file.Write(fileData, 0, fileData.Length);

另外,我的程序不在 ASP.NET 中,只是一个 C# 控制台应用程序。

【问题讨论】:

  • 这似乎是一个显而易见的问题,但 C:\tmpfolder 是文件夹吗?如果是这样,您将无法创建与该文件夹同名的文件。
  • 您的文件夹的安全权限(不是共享权限)是否设置为该文件夹的用户或所有人的完全控制?
  • 呃,我觉得自己非常愚蠢。 tmpfolder 是文件夹,然后我的意思是最后有 + 内容。谢谢!

标签: c# permissions filestream


【解决方案1】:

如果存储文件的位置无关紧要,请尝试

using System.IO;
.
.
.
string tempFile = Path.GetTempFileName();

这将在您的帐户临时文件夹中创建一个临时文件。无需担心权限 ;-)

【讨论】:

    【解决方案2】:

    我猜你没有对 c:\ 的写权限,你尝试在其中创建一个名为 tmpfolder.txt 的文件。

    如果您的 c:\ 中存在名为 tmpfolder 的文件夹,请将您的代码更改为

    file = new FileStream(@"C:\tmpfolder\myfile.tmp", FileMode.Create, FileAccess.Write);
    

    马里奥

    编辑:进一步说明:查看此链接How to create a temporary file (for writing to) in C#?,如果您同时进行多个文件操作,您可能需要它。之后不要忘记删除文件。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2021-08-31
      • 1970-01-01
      • 2014-07-28
      • 2020-04-30
      • 1970-01-01
      • 2013-02-13
      • 2011-12-05
      • 1970-01-01
      相关资源
      最近更新 更多