[英]Read file with whitespace in its path using 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")
而不是路径变量中的“/”?
通常路径中的空格应该无关紧要。 只要确保当您从外部源(如命令行)传递路径时,它最后不包含空格:
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);
}
不,您不需要转义空格。
如果代码抛出FileNotFoundException
,则该文件不存在(或者,您可能缺乏访问它的必要权限)。
如果权限很好,并且您认为该文件存在,请确保它的名称与您认为的名称相同。 特别是,请确保文件名不包含任何不可打印的字符、无意的前导或尾随空格等。为此, ls -b
可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.