C# 修改Application.StartupPath

C# 修改Application.StartupPath,c#,command-line,path,C#,Command Line,Path,我正在创建一个文件: String strPath = Application.StartupPath; .... string filePath = strPath + "\\Books" + ".zpl"; 稍后,该路径被发送到命令行以复制到Parralell端口(用于打印…) 我的问题是Application.StartupPath可能包含带空格的文件夹名称(例如:文档和设置)。 在这种情况下,我必须在文件夹名称上加引号。 但是Application.StartupPath=>在客户

我正在创建一个文件:

 String strPath = Application.StartupPath;
....
 string filePath = strPath + "\\Books" + ".zpl";
稍后,该路径被发送到命令行以复制到Parralell端口(用于打印…)

我的问题是
Application.StartupPath
可能包含带空格的文件夹名称(例如:文档和设置)。 在这种情况下,我必须在文件夹名称上加引号。 但是
Application.StartupPath
=>在客户端安装程序后,将知道生成的地址路径,因此我不知道是否需要以及需要多少文件夹名
quoting


有什么想法吗?

即使不总是需要引用,也不要伤害=>始终使用它们

但您不应使用
Application.StartupPath
执行此类任务。
您可以使用以下内容:

var dir = Path.Combine(Environment
    .GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyProgram");
if(!Directory.Exists(dir))
    Directory.CreateDirectory(dir);
var path = Path.Combine(dir, "books.zpl");

在启动路径中,如果您不是管理员并且应用程序安装到“程序文件”中,您将没有写入权限。

您建议使用什么?预定义路径?可能临时文件更适合您的情况,例如,不清楚String.IndexOf()为什么会减慢您的速度。否则就没有意义了,只是总是引用路径。
var dir = Path.Combine(Environment
    .GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyProgram");
if(!Directory.Exists(dir))
    Directory.CreateDirectory(dir);
var path = Path.Combine(dir, "books.zpl");