C# 构建文件的完整路径,该文件位于执行程序目录中的文件夹中

C# 构建文件的完整路径,该文件位于执行程序目录中的文件夹中,c#,.net,fileinfo,system.io.file,C#,.net,Fileinfo,System.io.file,在.exe的目录中,有一个名为exports的文件夹。我有一个为目录和文件名获取参数的方法 在本例中,我希望将目录指定为thisexports文件夹。以下是当前代码: public void saveFile(string dir, string filename) { ExcelPackage pck = new ExcelPackage(); // creating a spreadsheet... // now save the file System.

在.exe的目录中,有一个名为
exports
的文件夹。我有一个为目录和文件名获取参数的方法

在本例中,我希望将目录指定为this
exports
文件夹。以下是当前代码:

public void saveFile(string dir, string filename)
{
    ExcelPackage pck = new ExcelPackage();

    // creating a spreadsheet...

    // now save the file
    System.IO.FileInfo file = new System.IO.FileInfo(System.IO.Path.Combine(dir, filename) + ".xlsx");
    pck.Save(file);
    pck.Dispose();
}

// usage of the above method
saveFile(System.Reflection.Assembly.GetExecutingAssembly().Location + @"\exports", "myFileName");

这会产生一个异常:“不支持给定路径的格式”。如何解决此问题?

System.Reflection.Assembly.GetExecutionGassembly()。Location提供文件或exe的完整路径,包括exe名称

然后,如果不先删除exe名称,就不能在文件夹名称后添加文件夹名称

尝试使用
Path.GetDirectoryName
从路径中删除文件名:

var folder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
folder = Path.Combine(folder, "exports");
在尝试将文件写入已构建的文件夹路径之前,最好先
Directory.CreateDirectory(folder)
。如果该文件夹存在,则为非op,如果不存在,则将创建该文件夹。它可以一次创建多个子文件夹


还要记住,如果在程序文件中正确安装,应用程序不会自动将文件保存到程序文件下的子文件夹中。当程序安装到程序文件中时,此处与程序一起保存数据的代码可能会失败。。为什么在方法内部使用path.combine而不是在方法外部使用?我想我只是通过调试结果发现了问题。它实际上是“…\Debug\myApp.exe\exports\myFileName.xlsx”。它包括可执行文件的文件名作为路径的一部分。顺便说一句,检查我的答案的更新,它可能会帮你省去接下来的几个麻烦!