【问题标题】:Creating and using c# Application Folder创建和使用 c# 应用程序文件夹
【发布时间】:2014-02-15 07:03:36
【问题描述】:

我正在创建一个应用程序,该应用程序在我手动创建的一个文件夹中使用照片和一个 XML 文件, 我想让用户在运行时通过应用程序更新该文件夹的数据(添加照片和编辑 Xml 文件) 我的问题是最好的方法是什么以及该文件夹的放置位置, 我知道我必须放置相对路径,所以我很困惑 是否在 AppData 中,如果是的话怎么做。

【问题讨论】:

  • 使用CreateDirectory 创建新文件夹并将文件保存在其中
  • 文件夹我已经创建好了,我的重点是放在AppData或者程序执行文件夹的什么地方

标签: c# directory appdata


【解决方案1】:
// Use this to get the common directory
string CommonDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);

// And combine it with your own. 
// On Window7 this will return "c:\ProgramData\YourCompany\YourProduct"
string YourDir = Path.Combine(CommonDir, @"YourCompany\YourProduct");

// And create the directory / ensure it exists
System.IO.Directory.CreateDirectory(YourDir);

您可以从系统中获取其他Special Folders,例如MyDocuments 或Desktop,最适合您的需求。

【讨论】:

  • 我发现使用您的Environment.SpecialFolder.CommonApplicationData 找到适合我的东西我找到了Environment.SpecialFolder.MyDocuments
  • 太棒了!我已更新我的答案以包含指向所有特殊文件夹类型的链接。
【解决方案2】:

首先右键单击您的项目资源管理器并添加新文件夹,它会显示空文件夹,然后您将这些文件放入其中。

【讨论】:

  • 在这种情况下,安装我的应用程序后,该文件夹将放置在用户可以编辑该文件夹的位置和剂量?
【解决方案3】:

看:System.IO.IsolatedStorage

您可以使用不同的隔离范围来管理您的文件,而不必担心它们的实际位置:

应用程序 - 应用程序范围内的隔离存储。

Assembly - 范围为程序集标识的隔离存储。

域 - 范围为应用程序域身份的隔离存储。

机器 - 以机器为范围的隔离存储。

无 - 不使用独立存储。

漫游 - 隔离存储可以放置在文件上的某个位置 可能漫游的系统(如果在 底层操作系统)。

用户 - 按用户身份划分的隔离存储。

(来自这里:http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragescope(v=vs.110).aspx)

但您可能不需要对文件隔离进行这种控制。在这种情况下,您可以简单地使用本地用户的应用程序文件夹:

string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

看看:Environment.SpecialFolder - 那里有很多有用的地方。

当然,您可以随时使用应用程序的文件夹:

AppDomain.CurrentDomain.BaseDirectory

其他访问方式:Best way to get application folder path

【讨论】:

    【解决方案4】:

    您不应将该文件夹放在解决方案的某个文件夹中,例如 AppData(AppData 实际上是一个文件夹,可以包含数据库文件),因为当您完成应用程序的开发时,您只会得到 .EXE 输出文件(即放置在 Debug 文件夹中),这是您使用它的文件,或者例如将其提供给您的客户。 (但是您所说的 AppData 之类的文件夹只是放在您的解决方案中)

    因此您可以在任何您想要的地方创建文件夹。 但我建议您在应用程序的当前目录中创建它。 (.EXE 文件)

    您可以使用 Environment class=> Environment.CurrentDirectory 引用当前目录

    【讨论】:

    • 写在当前目录会导致很多权限问题。如果您在程序文件下有一个可执行文件,则除非您以高权限运行,否则您将无权在该目录中写入。更好的地方是用户的应用数据或文档目录。
    • 他说他想让用户编辑文件夹的内容:“我想让用户更新那个文件夹的数据”所以他想让用户编辑像 AppData(你说的)这样的文件夹的内容,而它只是在他的解决方案的目录中,而不是在输出的可执行文件 (.EXE) 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多