如何在Android内部存储上创build文件?
我想将内部存储器上的文件保存到特定的文件夹中。 我的代码是:
File mediaDir = new File("media"); if (!mediaDir.exists()){ mediaDir.createNewFile(); mediaDir.mkdir(); } File f = new File(getLocalPath()); f.createNewFile(); FileOutputStream fos = new FileOutputStream(f); fos.write(data); fos.close();
getLocalPath
返回/data/data/myPackage/files/media/qmhUZU.jpg
但是当我想创build媒体文件夹时,我得到exception“java.io.IOException:只读文件系统”。 任何想法如何写我的文件在内部电话存储在文件夹媒体? 谢谢。
你应该像这样使用ContextWrapper :
ContextWrapper cw = new ContextWrapper(context); File directory = cw.getDir("media", Context.MODE_PRIVATE);
像往常一样,参考文档 , ContextWrapper有很多提供。
您应该创buildmedia
目录附加到什么getLocalPath()
返回。
我也得到了相同的确切的错误。 这是修复。 当您指定要写入的位置时,Android会自动将您的pathparsing到/data/
或/mnt/sdcard/
。 让我解释。
如果您执行以下语句:
File resolveMe = new File("/data/myPackage/files/media/qmhUZU.jpg"); resolveMe.createNewFile();
它将解决在Android中的根/data/
更高的地方的path。
我明白了这一点,因为在我执行下面的代码之后,它被自动放在根/mnt/
没有我自己的任何东西。
File resolveMeSDCard = new File("/sdcard/myPackage/files/media/qmhUZU.jpg"); resolveMeSDCard.createNewFile();
一个快速的解决办法是改变你的下面的代码:
File f = new File(getLocalPath().replace("/data/data/", "/"));
希望这可以帮助
嗨尝试这将创build目录+文件里面
File mediaDir = new File("/sdcard/download/media"); if (!mediaDir.exists()){ mediaDir.mkdir(); } File resolveMeSDCard = new File("/sdcard/download/media/hello_file.txt"); resolveMeSDCard.createNewFile(); FileOutputStream fos = new FileOutputStream(resolveMeSDCard); fos.write(string.getBytes()); fos.close(); System.out.println("Your file has been written");