【问题标题】:how to handle spaces in file names in path如何处理路径中文件名中的空格
【发布时间】:2017-07-12 11:54:07
【问题描述】:

我想访问这样的文件:

new ChoJSONReader(@"0_Target Finds.json")

但我尝试了所有可能的访问方式,例如:

new ChoJSONReader("'0_Target Finds.json'")

没有什么对我有用..有谁知道请帮助我

【问题讨论】:

  • 空间应该不是问题。但是,在不指定路径的情况下,该文件应该在当前目录中可用(默认情况下是存储 exe 文件的目录)。尝试使用绝对路径作为参数。
  • @SunithaBist 您是否遇到异常或根本没有发生任何事情?您可以尝试调用System.IO.File.Exists("0_Target Finds.json"); 并检查其返回值。如果返回 true 并且组件仍然没有打开文件,则可能是组件的问题。
  • @FatalJamòn 没问题 :-) 有一些复杂的情况是绝对正确的。顺便说一句:我确定您在噩梦中发现了,但是您可以在文件对话框中使用RestoreDirectory 属性在对话框关闭后重置目录。不幸的是,默认值为 false...
  • 从那时起我就一直使用绝对文件路径,我的所有 exe 搜索都使用 AppDomain.CurrentDomain.GetBaseDirectory 路径。除非我自己的代码明确设置,否则我很少依赖当前目录。

标签: c# c#-4.0 choetl


【解决方案1】:

问题在于ChoJSONReader 以特殊方式处理相对文件名。我想它使用程序集所在的文件夹而不是使用当前工作目录。您可以通过提供构造函数的完整路径来修复错误。

如果你确定文件位于当前目录,你可以像这样得到完整路径:

var fullPath = System.IO.Path.GetFullPath("0_Target Finds.json");
new ChoJSONReader(fullPath)

如果你知道文件所在的目录,最好使用特定的路径,不要依赖当前的工作目录。可以使用Environment.GetFolderPathSystem.IO.Path类的方法来组装路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多