Android中保存文件与文件名空间(Save file in Android with space

2019-09-16 17:17发布

我需要为我的Android应用程序到一个XML文件保存到与含有空间的文件名外部缓存。

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

transformer.transform(source, result);

当我手动浏览到我的文件目录,我找到这个文件:“本地%20storage.xml”。

所以,以后当我尝试读取它

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

但我有一个FileNotFoundException异常,因为文件“本地storage.xml”我的设备无法找到。

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

Answer 1:

这是很难确定这个问题的来源,但它来自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();
    }
}

再次感谢你们俩为试图解决我的问题。



Answer 2:

这对我的作品,是只有一个的代码额外的行

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


Answer 3:

尝试使用基本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");

不得已选择启用将试图协商的空间。 尝试“用“\”替换”。



文章来源: Save file in Android with spaces in file name