【问题标题】:Not sure how Directory.CreateDirectory() works不确定 Directory.CreateDirectory() 是如何工作的
【发布时间】:2013-03-01 11:57:24
【问题描述】:

我的控制器中有这段代码:

public ActionResult Upload(ScormUploadViewModel model)
{
  if (ModelState.IsValid)
  {
    if (model.ScormPackageFile != null)
    {
      string zipCurFile = model.ScormPackageFile.FileName;
      string destinationDirectoryName = Path.GetFullPath(zipCurFile);
      //.GetFileNameWithoutExtension(zipCurFile);
      Directory.CreateDirectory(destinationDirectoryName);
    }
   }
 }

我通过我的视图上传了一个 zip 文件,然后需要将其解压缩到与 zipfilename 同名的文件夹中的相同位置

文件为:C:\TFSPreview\Zinc\Web\Project\ScormPackages\Windows 8 Training SkyDrive - Spanish.zip

我需要在 C:\TFSPreview\Zinc\Web\Project\ScormPackages\ 中创建一个文件夹 名称:Windows 8 Training SkyDrive - 西班牙语

因此有:C:\TFSPreview\Zinc\Web\Project\ScormPackages\Windows 8 Training SkyDrive - Spanish\

并解压上述文件夹中包含在 C:\TFSPreview\Zinc\Web\Project\ScormPackages\Windows 8 Training SkyDrive - Spanish.zip 中的所有文件

所以我的问题是:CreateDirectory() 会在 C:\TFSPreview\Zinc\Web\Project\ScormPackages\ 中创建文件夹 Windows 8 Training SkyDrive - Spanish 还是会尝试在 c:?? 中创建文件夹? /p>

谢谢

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    它将在C:\TFSPreview\Zinc\Web\Project\ScormPackages\ 中创建目录。 In fact,如果目录不存在,它将在该路径中创建 all 目录:

    创建路径中指定的所有目录,除非它们 已经存在或除非路径的某些部分无效。路径 参数指定目录路径,而不是文件路径。如果 目录已存在,此方法不会创建新目录, 但它会为现有目录返回一个 DirectoryInfo 对象。

    但是,此代码有一个错误:destinationDirectoryName 不是目录的路径,而是目标目录中的文件 的路径。所以你应该做的是

    // zipCurFile = C:\...\ScormPackages\Windows 8 Training SkyDrive - Spanish.zip
    // Path.GetDirectoryName gives "C:\...\ScormPackages"
    // Path.GetFileName gives "Windows 8 Training SkyDrive - Spanish"
    // Path.Combine on these two gives you the correct target
    
    Directory.CreateDirectory(
        Path.Combine(
            Path.GetDirectoryName(zipCurFile), Path.GetFileName(zipCurFile));
    

    【讨论】:

    • 感谢我已设置权限,使用 Windows 资源管理器和默认应用程序池的东西,但仍然在 CreateDirectory 行上收到错误访问被拒绝???拒绝访问路径“C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\Windows 8 Training SkyDrive - Spanish.zip”。 ???这个目录路径不正确我想要它在 C:\TFSPreview\Zinc\Web\Project\ScormPackages\ 我不明白?
    • @charlie_cat:显然zipCurFile 的值不是你所期望的,你需要解决它。垃圾进,垃圾出。
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 2015-04-12
    • 2010-10-15
    相关资源
    最近更新 更多