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

Building full path to file, which is inside a folder inside the directory of the executing program

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

在这种情况下,我想将目录作为这个 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.GetExecutingAssembly().Location 给出文件或 exe 的完整路径,包括 exe 名称

如果不先删除 exe 名称,则无法在其后添加文件夹名称

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

var folder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
folder = Path.Combine(folder, "exports");

在您尝试将文件写入您已构建的文件夹路径之前,Directory.CreateDirectory(folder) 始终是个好主意。如果该文件夹存在,则它是一个非操作,如果不存在,它将创建它。可以一次性创建多个子文件夹

另请记住,在 Program Files 中正确安装后,应用程序不会自动有权将文件保存到 Program Files 下的子文件夹中。当程序安装到 Program Files

时,您在此处与程序一起保存数据的代码可能会失败