Java读取文件,其路径中包含空格

我试图用FileInputStream打开文件,其名称中包含空格。

例如:

String fileName = "This is my file.txt"; String path = "/home/myUsername/folder/"; String filePath = path + filename; f = new BufferedInputStream(new FileInputStream(filePath)); 

结果是抛出了FileNotFoundException。 我试图将filePath硬编码为"/home/myUserName/folder/This\\ is\\ my\\ file.txt"只是为了看看我是否应该转义空格字符并且它似乎不起作用。 对此事有何建议?

编辑:只是与所有人查看此问题在同一页面上…打开一个文件名称中没有空格的文件,一个有空格的文件失败。 权限不是此处的问题,也不是文件夹分隔符。

带空格的文件名工作得很好

这是我的代码

 File f = new File("/Windows/F/Programming/Projects/NetBeans/TestApplications/database prop.properties"); System.out.println(f.exists()); try { FileInputStream stream = new FileInputStream(f); } catch (FileNotFoundException ex) { System.out.println(ex.getMessage()); } 

f.exists()总是没有任何问题地返回true

看起来你的问题而不是文件分隔符而不是文件名中的空格。 你尝试过使用过吗?

 System.getProperty("file.separator") 

而不是路径变量中的’/’?

不,你不需要逃避空格。

如果代码抛出FileNotFoundException ,则该文件不存在(或者,您可能缺少访问它的必要权限)。

如果权限很好,并且您认为该文件存在,请确保它被称为您认为它的名称。 特别是,请确保文件名不包含任何不可打印的字符,无意的前导或尾随空格等。为此, ls -b可能会有所帮助。

通常路径中的空白不重要。 只要确保从外部源(如命令行)传递路径时,它最后不包含空格:

 File file = new File(path.trim()); 

如果您想要没有空格的路径,可以将其转换为URI,然后再转换回路径

 try { URI u = new URI(path.trim().replaceAll("\\u0020", "%20")); File file = new File(u.getPath()); } catch (URISyntaxException ex) { Exceptions.printStackTrace(ex); }