【问题标题】:java File.separator becomes "%" in path of the File on Windowsjava File.separator 在 Windows 上的文件路径中变为“%”
【发布时间】:2015-08-05 13:34:02
【问题描述】:

我尝试从资源文件夹中读取文件。问题是,File.separator 在 Windows 上变成了“%"”。

String inputFilesFolder = "input_files" + File.separator;
File file = new File(classLoader.getResource(inputFilesFolder + "filename").getFile());

inputFilesFolder 还是可以的(input_files/),但是创建文件后file.getPath() 变成了D:\blabla\input_files%filename

然后我尝试读取该文件,但我得到一个 FileNotFoundException(大惊喜)。 这里有什么问题?

【问题讨论】:

  • 请按照您实际拥有的方式修复您的代码。

标签: java windows file


【解决方案1】:

试试这个:

File file = new File(classLoader.getResource(inputFilesFolder + filename).toURI());

【讨论】:

  • 你不能从包中加载资源作为文件:)
  • 我不明白你的意思......但是有可能。
  • 是吗?所以你也可以列出你的应用包中的文件,或者修改它们?
  • @KrzysztofCichocki 如果文件被分解①是的。 ② 没有。 :)
【解决方案2】:

怎么样

 String inputFilesFolder = "input_files" + File.separator;
 File file = new File(classLoader.getResource(inputFilesFolder + filename).toString());

【讨论】:

  • getResource() 返回一个 URL,而 File 没有接受它的构造函数。
  • @vargen_ 使用 toString() 以便该文件将使用 File(String) 构造函数
【解决方案3】:

File.separator 是一个文件系统的东西。当您使用 classLoader.getResource() 时,请始终使用正斜杠,因为资源的名称是以“/”分隔的路径名。

See Javadoc for getResource()

【讨论】:

  • 好提示。或者正如我的教授曾经说过的那样:“使用源代码”
猜你喜欢
  • 2015-06-23
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多