【问题标题】:C# path not being found找不到 C# 路径
【发布时间】:2018-09-04 19:49:50
【问题描述】:

我目前正在尝试使用System.Diagnostics.Process.Start 打开第 16 页的 PDF 文件,但它不会选择我的文件路径。这是我希望从C:\Users\ipadc\Desktop\projek\Bookstore Bargainer System (4 Sept)\BookstoreBargainerSystem\bin\Debug\Pdfs\User_Manual 打开的文件路径。它存储在我的 Application.StartupPath 中。 这是我尝试过的代码,但它说它找不到路径。

System.Diagnostics.Process.Start(
   "Acrobat.exe /A \"page=16\" \""+Application.StartupPath+ "\\Pdfs\\User_Manual.pdf");

但它只是说The file does not exist

任何人都知道它为什么找不到这个文件。该文件是 Adob​​e Acrobat 类型,另存为 .pdf

【问题讨论】:

  • System.Diagnostics.Process.Start处下断点,告诉我们StartInfo的值。

标签: c# filepath


【解决方案1】:

您的参数不能是 process.start 的一部分。这需要可执行文件名。

文件名和参数不同,需要分开。

Process acro = new Process();
acro.StartInfo.FileName = "Acrobat.exe"
acro.StartInfo.Arguments = "/A \"page=16\" \""+Application.StartupPath+ "\Pdfs\User_Manual.pdf\""
acro.Start();

我还在你的路径末尾添加了一个额外的引号。

您也可以这样做,注意参数是此处开始的第二个参数:

Process.Start("Acrobat.exe", "/A \"page=16\" \""+Application.StartupPath+ "\Pdfs\User_Manual.pdf\"");

并添加了Path.Combine 推荐的路径(Marco 的评论是对的)。

Process.Start("Acrobat.exe", 
    "/A \"page=16\" \"" +  
    System.IO.Path.Combine(Application.StartupPath, "Pdfs", "User_Manual.pdf") 
    + "\"");

【讨论】:

  • 您的回答是正确的,我刚刚投了赞成票。但请不要使用字符串和斜杠合并路径,请改用Path.CombinePath.Combine(Application.StartupPath, "Pdfs", "User_Manual.pdf")。所以你可以避免斜杠和特殊字符的问题(我很确定你的示例甚至不会编译或返回错误的路径)
  • 谢谢你我第一次使用这些所以不知道我必须单独分配参数。谢谢帮助
  • @marco - 你是对的,我最初不会这样编码。我添加了你的推荐。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-04
相关资源
最近更新 更多