C# 如何在C语言中正确地给出路径

C# 如何在C语言中正确地给出路径,c#,C#,我的项目中有一个名为Export的文件夹,我使用以下代码将文件保存到该文件夹: document.Save(@"D:\workspace\folder1\Solution.Application.DataExporter\Export\mydocument.pdf"); 但当其他人使用此代码时,他们会抱怨自己没有这条路径。我如何给我的代码提供路径,使它在任何地方都能工作?谢谢。选项1:使用Environment.SpecialFolder获取特殊文件夹的物理位置。有关可能的特殊文件夹的概述,请

我的项目中有一个名为Export的文件夹,我使用以下代码将文件保存到该文件夹:

document.Save(@"D:\workspace\folder1\Solution.Application.DataExporter\Export\mydocument.pdf");
但当其他人使用此代码时,他们会抱怨自己没有这条路径。我如何给我的代码提供路径,使它在任何地方都能工作?谢谢。

选项1:使用Environment.SpecialFolder获取特殊文件夹的物理位置。有关可能的特殊文件夹的概述,请参阅

例如,如果要将文档放入“我的文档”文件夹,则Environment.SpecialFolder.MyDocuments将为您提供当前计算机上“我的文档”文件夹的位置

代码:

这样,您就可以确保始终拥有正确的现有位置。如果需要,您始终可以首先使用Directory.CreateDirectory将导出文件夹创建到此特殊文件夹(如果该文件夹尚不存在)


选项2:当然,如果您不想使用预定义的位置,您可以随时向用户请求位置,例如使用类。

在MyDocuments中创建文件夹“Export”,然后将文件保存到该目录。正如许多其他人指出的那样。您需要保存到执行用户有权访问的目录中

string documentFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Export");

if (!Directory.Exists(documentFolder))
{
   Directory.CreateDirectory(documentFolder);
}

document.Save(Path.Combine(documentFolder, "mydocument.pdf"));

为什么不提示用户指定路径,然后用户可以将其导出到任何需要的位置。您可以使用Environment.SpecialFolder查找/访问/创建您拥有权限的文件夹。此外,C:MyFile.txt中的C:with-no-backslah将使用您的项目文件夹。您将在appdata环境中拥有权限。SpecialFolder很可能是分发的方式,因为您实际上可以保证每个用户都有一个权限。@dman2306,因为要求是这样的。@Jason如果要求将文件保存到不存在的文件夹,听起来你需要有人修改这些要求。。。如果我的电脑上连D驱动器都没有呢?是否有一个D驱动器也必须存在的要求?@jason-那么要求是什么?我读了??因为OP正在查找文件夹,而不是文件夹。使用d:\从一开始就是个坏主意,因为不是每个人都有d\@我刚才给了两个选择,不确定地点必须是那个。我的文档是存储用户文档的好地方。AppData是存储应用程序数据、设置、查找值等的好地方。工作区听起来更像用户文档,尽管最终用户应该能够指定不同的location@sstan那是一个不存在的文件夹。OP正在尝试保存到不存在的磁盘或文件夹中。MyDocuments是从用户生成的文件、工作区、项目文件夹等开始的最佳选项。如果我没记错的话,它也是SaveFileDialog@sstan事实上,这是个问题。这很不清楚,OP试图避免询问用户。这个答案是最好的起点
string documentFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Export");

if (!Directory.Exists(documentFolder))
{
   Directory.CreateDirectory(documentFolder);
}

document.Save(Path.Combine(documentFolder, "mydocument.pdf"));