C# 构建文件的完整路径,该文件位于执行程序目录中的文件夹中
在.exe的目录中,有一个名为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.
exports
的文件夹。我有一个为目录和文件名获取参数的方法
在本例中,我希望将目录指定为thisexports
文件夹。以下是当前代码:
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”。它包括可执行文件的文件名作为路径的一部分。顺便说一句,检查我的答案的更新,它可能会帮你省去接下来的几个麻烦!