【问题标题】:Saving files and images in a folder in the project using relative path使用相对路径将文件和图像保存在项目中的文件夹中
【发布时间】:2013-05-01 15:12:38
【问题描述】:

在我的项目中,我最终将不得不保存在网上创建或拍摄的图像并保存其他创建的文件,我知道该怎么做。问题是当我碰巧保存我的图像时,我的工作方式是这样的:

using (var imgClient = new WebClient())
{
    Directory.CreateDirectory(imagesDirectory);
    imgClient.DownloadFile(imgUrl, imagesDirectory + m_ObjNameToUse + "(" + abv+ ")" + objNumber + ".jpeg");
}

我此时调用Directory.CreateDirectory方法来确保目录总是在创建镜像之前创建,防止崩溃。

现在我的问题是它使用了字符串 imagesDirectory,这是一个硬编码的字符串,看起来像这样:

string imagesDirectory = "C:\\Creation_Folder\\Object_Sets\\Images\\" + _objSetName+ "\\";

目前有效。但我正在开发中,该项目最终会发布。我想将图像保存在项目中的“Images”文件夹下,将_objSetName添加为新文件夹,以区分创建的每个图像,以避免在同一文件中包含太多图像。

所以我的问题是如何告诉我的应用程序找到项目中包含的Images 文件夹,然后在_objSetName 下创建一个文件夹?

【问题讨论】:

    标签: c# path directory


    【解决方案1】:

    您可以尝试使用您的应用程序基础文件夹AppDomain.CurrentDomain.BaseFolder。这是您的应用程序所在的文件夹。从那里很容易:

     string imagesDirectory = AppDomain.CurrentDomain.BaseFolder + "Object Sets\\Images\\" + _objSetName+ "\\";
    

    【讨论】:

      【解决方案2】:
      string imagesDirectory = Path.Combine(Environment.CurrentDirectory, "Images", _objSetName);
      

      旁注,您可能希望将图像存储在AppData 之类的文件夹中,保证您的用户具有写入权限。您的应用程序的子目录可能只有机器管理员才能访问。

      【讨论】:

      • 嗯,在某种程度上,我希望这些图像受到保护,因此不允许写访问可能是个好主意。无论如何,我会尝试你刚才的建议并尽快让你回来。
      • Environment.CurrentDirectory 允许在应用程序的生命周期内更改。这就是应用程序可能会丢失其图像的原因。
      • 这引发了一个错误,因为它引用了我计算机的 IIS 文件,而不是部署应用程序的当前文件夹。
      • @HerveS - 当前目录是 IIS,因为这是运行应用程序的地方。这段代码实际上是正确的。
      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 2017-01-05
      • 2016-04-06
      • 2018-01-27
      • 1970-01-01
      • 2013-09-23
      • 2012-01-21
      • 2020-06-23
      相关资源
      最近更新 更多