java – 在Android上创建临时文件的最佳方式是什么?

前端之家收集整理的这篇文章主要介绍了java – 在Android上创建临时文件的最佳方式是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
那么这并不完全是一个问题,因为我并没有真正地“停留在我的代码上”,但是我发现一些关于访问外部存储和File.createTempFile()方法Android API有一些奇怪的行为,想了解发生了什么…

请注意,我的清单不包括< uses-permission android:name =“android.permission.WRITE_EXTERNAL_STORAGE”>.

第1部分 :

我有以下代码作为一个魅力工作:

File tempFile = new File(Environment.getExternalStorageDirectory(),"my_temp_file.png");

它为我创建一个临时文件,我可以在其中编写数据没有任何麻烦.

问题1:为什么它的工作,因为我不应该在我的SDCard有写权限?

第2部分 :

我已经尝试改变我的代码来使用createTempFile,这是创建临时文件的官方方法.所以我试过:

File tempFile = File.createTempFile("my_temp","png",Environment.getExternalStorageDirectory());

并在我的manifest.xml中添加了WRITE_EXTERNAL_STORAGE.你猜怎么了 ?这不行,我得到一个java.io.IOException:

09-07 14:07:29.061: E/_CLOG(19982): java.io.IOException: Permission denied
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createNewFileImpl(Native Method)
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createNewFile(File.java:1257)
09-07 14:07:29.061: E/_CLOG(19982):     at java.io.File.createTempFile(File.java:1322)
09-07 14:07:29.061: E/_CLOG(19982):     at com.(...).onClick(ProfileImageUpdater.java:58)

问题2:为什么这不行,而imho应该?

解决方法

尝试这样…
File outputDir = context.getCacheDir(); // context being the Activity pointer
File outputFile = File.createTempFile("prefix","extension",outputDir);

编辑:

对于问题2

可能是以下链接的问题

Environment.getExternalStorageDirectory does not return the path to the removable storage

原文链接:https://www.f2er.com/android/123969.html

猜你在找的Android相关文章