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

gra*_*u03 5 java android filenotfoundexception

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

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

transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)

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

所以在我尝试阅读之后

File localStorageXmlFile = new File(activity.getExternalCacheDir()
                .getAbsolutePath()
                + "/Local storage.xml");
Run Code Online (Sandbox Code Playgroud)

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

任何解决这个问题的想法?勒布

gra*_*u03 6

很难确定这个问题的根源,但它来自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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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