如何在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");