在Android中保存文件,文件名中包含空格

我需要我的android应用程序将xml文件保存到外部缓存中,文件名包含空格。

DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File(activity .getExternalCacheDir().getAbsolutePath() + "/Local storage.xml")); transformer.transform(source, result); 

当我手动浏览到我的文件目录时,我find了这个文件:“Local%20storage.xml”。

所以在我尝试阅读之后

 File localStorageXmlFile = new File(activity.getExternalCacheDir() .getAbsolutePath() + "/Local storage.xml"); 

但是我有一个FileNotFoundException,因为在我的设备上找不到文件“Local storage.xml”。

有什么想法解决这个问题? 勒布

很难确定此问题的根源,但它来自StreamResult,它将文件名中的空格替换为%20。 这里有一个关于此问题的错误报告。

这是解决方案:

 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); FileOutputStream fos = null; try { fos = new FileOutputStream(new File(activity .getExternalCacheDir().getAbsolutePath() + "/" + "Local storage" + ".xml")); Result fileResult = new StreamResult(fos); transformer.transform(source, fileResult); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fos != null) { fos.close(); } } 

再次感谢你们两位试图解决我的问题。

这适用于我,只是一行额外的代码

 String fileName = "name with spaces" + ".xml"; fileName.replace(" ", "\\ "); 

尝试使用基本URL编码:

 File localStorageXmlFile = new File(activity.getExternalCacheDir() .getAbsolutePath() + "/Local%20storage.xml"); 

这个mgiht帮助你: URL编码表

此外,在处理文件时,请确保您使用正确的操作系统文件分隔符(在您的情况下,硬编码/应该可以工作,因为Android是基于Linux的,但只是为了确保。这可能是另一种选择:

 File localStorageXmlFile = new File(activity.getExternalCacheDir() .getAbsolutePath() + File.separator + "Local storage.xml"); 

最后的选择是optin试图占据空间。 尝试将“”替换为“\”。