我正在尝试使用名称中包含空格的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"
只是为了看看我是否应该转义空白字符,它似乎不起作用。
关于此事的任何建议?
编辑:只是与每个查看此问题的人在同一页面上...打开一个文件名称中没有空格的文件,一个有空格的文件失败。权限不是问题,也不是文件夹分隔符。
答案 0 :(得分:4)
带空格的文件名可以正常使用
这是我的代码
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
答案 1 :(得分:1)
看起来你的文件分隔符比文件名中的空格有问题。你尝试过使用
吗?System.getProperty("file.separator")
而不是路径变量中的'/'?
答案 2 :(得分:-1)
不,你不需要逃避空格。
如果代码抛出FileNotFoundException
,则该文件不存在(或者,您可能缺少访问它的必要权限)。
如果权限很好,并且您认为该文件存在,请确保它被称为您认为它的名称。特别是,请确保文件名不包含任何不可打印的字符,无意的前导或尾随空格等。为此,ls -b
可能会有所帮助。
答案 3 :(得分:-1)
通常路径中的空白应该是重要的。只要确保当你从外部源(如命令行)传递路径时,它最后不包含空格:
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);
}