- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将我在某些 Activity 中拥有的位图保存到我为此目的创建的目录中的外部存储。将图像保存到 sdcard(外部存储器,而不是外部 sd)的方法在不同的类(和不同的包)中,所以我假设我需要上下文,但我找不到任何地方来提供上下文(试过 openFileOutput
但它得到 String fileName
不能包含路径分隔符)。当我运行我的代码时,我在日志 cat 中收到此错误:
04-11 22:13:14.899: E/error(13833): /mnt/sdcard/myTomatoes/covers/378194.PNG: open failed: ENOENT (No such file or directory)
04-11 22:13:14.899: W/System.err(13833): java.io.FileNotFoundException: /mnt/sdcard/myTomatoes/covers/378194.PNG: open failed: ENOENT (No such file or directory)
04-11 22:13:14.899: W/System.err(13833): at libcore.io.IoBridge.open(IoBridge.java:416)
04-11 22:13:14.899: W/System.err(13833): at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
04-11 22:13:14.899: W/System.err(13833): at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
04-11 22:13:14.899: W/System.err(13833): at BL.ImageMethods.SaveImageToMemory(ImageMethods.java:60)
04-11 22:13:14.899: W/System.err(13833): at com.example.mytomatoes.MovieDetailsActivity$4.onClick(MovieDetailsActivity.java:337)
04-11 22:13:14.899: W/System.err(13833): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
04-11 22:13:14.899: W/System.err(13833): at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 22:13:14.899: W/System.err(13833): at android.os.Looper.loop(Looper.java:137)
04-11 22:13:14.899: W/System.err(13833): at android.app.ActivityThread.main(ActivityThread.java:5039)
04-11 22:13:14.899: W/System.err(13833): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 22:13:14.899: W/System.err(13833): at java.lang.reflect.Method.invoke(Method.java:511)
04-11 22:13:14.899: W/System.err(13833): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-11 22:13:14.899: W/System.err(13833): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-11 22:13:14.899: W/System.err(13833): at dalvik.system.NativeStart.main(Native Method)
04-11 22:13:14.899: W/System.err(13833): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
04-11 22:13:14.899: W/System.err(13833): at libcore.io.Posix.open(Native Method)
04-11 22:13:14.899: W/System.err(13833): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
04-11 22:13:14.899: W/System.err(13833): at libcore.io.IoBridge.open(IoBridge.java:400)
这些是我的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
这是我保存文件的方法:
public static void SaveImageToMemory(Context context, Bitmap img, int rottenId) {
Log.i("SAVE IMAGE", "start save");
File sd = Environment.getExternalStorageDirectory();
File location = new File(sd.getAbsolutePath()+ "/myTomatoes/covers");
location.mkdir();
File dest = new File(location, rottenId + ".PNG");
try {
Log.i("SAVE IMAGE", "trying to save: " + dest.getPath());
FileOutputStream fos = new FileOutputStream(dest);
img.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
Log.e("error", e.getMessage());
e.printStackTrace();
}
}
所有用于创建 File
对象的困惑行都是我尝试的结果......原始代码是:
File location = new File(Environment.getExternalStorageDirectory() + "/myTomatoes/covers");
File dest = new File(location, rottenId + ".PNG");
我还尝试先创建 ByteArrayOutputStream
并将位图压缩到它,然后执行 fos.write(mByteArrayOpStream.toByteArray())
但它没有用。
顺便说一下,我使用的是模拟器,但我也在几个“Galaxy S”上检查过,同样的错误发生了……(当我尝试在手机或 DDMS 中浏览文件时,我可以看到它甚至不创建文件夹...
最佳答案
从您的问题描述来看,您似乎甚至无法创建文件夹。所以请确保以下几点
目录已创建
如果 (!file.isExist())boolean created=file.mkdir();
稍后您可以通过测试 bool 值来检查您的文件夹是否已创建。如果您的文件夹未创建,则没有理由进一步使用您的代码。
或者,您可以使用 mkdirs()
,它将创建所有必要的父目录。
关于android - 将位图写入外部存储(sdcard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960173/
我在 /data/data/files/settings.dat 中有一个文件并想将此文件存储/复制到 sdcard 中,该文件已被很好地读取但是当尝试将其复制到 sdcard 时,我有一个异常(ex
我只想知道如何在android模拟器中删除虚拟sdcard。 最佳答案 有了有关使用“rm -r *”系列命令的预期注意事项和警告,您还可以使用:adb -e shell rm -r/mnt/sdca
我正在尝试将位图保存到图片目录中。这是代码 File path = Environment.getExternalStoragePublicDirectory(Environm
我有一个很大的(50 兆)下载,如果已安装,我想将其加载到 SD 卡中。如果没有sdcard,我就下载到内部存储。我检查两种情况下的可用空间。 我的代码在模拟器和我的 Droid 2 上运行良好。我的
我快被一个奇怪的问题气疯了。如果我在我的代码中创建一个文件夹作为 directory_path = Environment.getExternalStorageDirectory()
我有一个特殊的问题,我有一个在启动完成时启动的 android 服务。服务完成从 sdcard 读取文件并将 pid 写入 sdcard 的工作,但是 .使用日志我知道原因是:无法将数据写入 sdca
我正在为 Yocto (Morty) 开发一个 sdcard 图像类,这基本上是直截了当的。必须在屋顶完成后构建 SD 卡镜像。 这可以由 IMAGE_TYPEDEP_sdcard 指示,在我的情况下
任何人都可以帮我解决 traceview 问题!我创建了 sdcard 并将其安装在我的模拟器上,关闭我的应用程序后,当我尝试拉取复制文件时(使用命令:adb pull/sdcard/calc.tra
我正在开发一个基本的音乐播放器,它将获取 SDCard 上的歌曲。它处于早期阶段,我遇到了一个小问题。每当我在手机上运行该应用程序时,它都能很好地播放 SDCard 上的歌曲。现在,当我在教师手机上运
我正在尝试将我在某些 Activity 中拥有的位图保存到我为此目的创建的目录中的外部存储。将图像保存到 sdcard(外部存储器,而不是外部 sd)的方法在不同的类(和不同的包)中,所以我假设我需要
我知道这个问题可能已经回答了很多次,我也进行了搜索,但我无法解决我的问题。每次我尝试写入 SD 卡时,它似乎都会写入内部存储。我的代码行很简单 File root = android.os.Envir
我想知道,是否可以在重新启动应用程序时暂停下载,退出应用程序并恢复从远程服务器下载文件到手机的 SDCard。 然后跟进问题:我有一个通过 HTTP 下载的代码。我也可以通过 FTP 完成吗?哪个更好
我的应用程序中有一个 Activity ,它基本上是一个画廊,显示位于我的 SD 卡上的图片。我正在使用此功能重新安装 sdcard 以在 Activity 开始时扫描新图像: sendBro
我想在 SD 卡上的特定文件夹中创建新文件时收到通知(通过广播)。我可以创建服务并为其轮询,但我更喜欢系统事件(如果存在的话)。 最佳答案 我找到了。 FileObserver会做的。 关于Andro
随着我应用中数据库的增长,它需要越来越多的内部手机空间。数据库中没有任何敏感/隐私数据,因此我有兴趣将其移至 SD 卡。 我正在使用 SQLiteOpenHelper 来协助数据库工作。据我了解,您不
我正在尝试将 Http 帖子回复中的文件写入 sdcard 上的文件。在检索到数据的字节数组之前,一切正常。 我尝试在 list 中设置 WRITE_EXTERNAL_STORAGE 权限并尝试了我在
我想在 Sdcard 中创建目录,并且我确实遵循: 我添加了:在 list 中。 我通过以下方式获取 root_path:public static final String ROOT_PATH =
我正在尝试使用以下代码在/storage/emulated/0/Pictures 下创建目录: File(Environment.getExternalStoragePublicDir
为什么Environment.getExternalStorageDirectory()返回内部存储(storage/sdcard0/)?就我而言,sdcard0 是本地的,sdcard1 是外部的.
我的对话框显示目录 /sdcard 及其所有文件。选择文件/图像后,路径将与位图图像一起保存,例如 file.name = "/sdcard/Pictures/Screenshots/Screensh
我是一名优秀的程序员,十分优秀!