将Android文件保存到外部存储

将Android文件保存到外部存储

在创建一个目录并在我的Android应用程序上将一个文件保存到它时,我遇到了一个小问题。我用这段代码来做这件事:

String filename = "MyApp/MediaTag/MediaTag-"+objectId+".png";File file = new File(Environment.getExternalStorageDirectory(),
 filename);FileOutputStream fos;fos = new FileOutputStream(file);fos.write(mediaTagBuffer);fos.flush();fos.close();

但它带来了一个例外:

java.io.FileNotFoundException:/mnt/sdCard/myApp/mediacard/mediacard-0.png(没有此类文件或目录)

在这方面:fos = new FileOutputStream(file);

如果我将文件名设置为:"MyApp/MediaTag-"+objectId+"它正在工作,但如果我试图创建文件并将其保存到另一个目录,则会抛出异常。你知道我做错了什么吗?

还有另一个问题:是否有任何方法使我的文件在外部存储中是私有的,这样用户就不能在图片库中看到它们,除非他将设备连接为Disk Drive?


MYYA
浏览 867回答 3
3回答

精慕HU

你需要得到许可<&nbsp;uses-permission&nbsp;android:name="android.permission.WRITE_EXTERNAL_STORAGE"&nbsp;/> public&nbsp;boolean&nbsp;saveImageOnExternalData(String&nbsp;filePath,&nbsp;byte[]&nbsp;fileData)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isFileSaved&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;f&nbsp;=&nbsp;new&nbsp;File(filePath); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(f.exists()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.delete(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.createNewFile(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;fos&nbsp;=&nbsp;new&nbsp;FileOutputStream(f); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.write(fileData); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.flush(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fos.close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isFileSaved&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;File&nbsp;Saved &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("FileNotFoundException"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("IOException"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;isFileSaved; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;File&nbsp;Not&nbsp;Saved }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android