当前位置: 首页 > 知识库问答 >
问题:

Android-无法将文件保存到存储

杜烨伟
2023-03-14

我尝试用以下代码保存从internet下载的文件

public static String saveToSdCard(Bitmap bitmap, String filename) {

    String stored = null;

    File sdcard = Environment.getExternalStorageDirectory() ;

    File folder = new File(sdcard.getAbsoluteFile(), ".tanks");
    boolean success = true; //the dot makes this directory hidden to the user

    if (!folder.exists()) {
        success = folder.mkdir();
    }

    if (success) {
        File file = new File(folder.getAbsoluteFile(), filename + ".jpg") ;
        if (file.exists())
            return stored ;

        try {
            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();
            stored = "success";
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    return stored;
}

但在运行时,我得到的错误如下

03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e618.jpg:打开失败:ENOENT(没有这样的文件或目录)

在我的应用程序清单文件中,我添加了权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

但是当我启动应用程序时,没有请求授予权限的警报。

我做错什么了吗?

共有1个答案

逄俊力
2023-03-14

尝试删除文件夹并手动创建它。根据你的代码,

File tempFolder = new File(sdcard.getAbsoluteFile(), ".tanks");
tempFolder.mkdirs();
if (success) {
    File file = new File(tempFolder, filename + ".jpg") ;
    ...
}
 类似资料:
  • 目前,我的(使用的是Stackoverflow,我自己没有完整地编写)代码如下所示: 我得到错误:“打开失败;EACCES(权限被拒绝)”。 我的舱单是这样的:

  • 问题内容: 用相机拍照后,我想将其保存在该布局中。我还想将其保存到文件中,并在创建活动时能够加载该图片(因此,如果我切换到其他活动并返回到此活动)。到目前为止,我可以拍照并显示它,但是如果我多次切换活动,图片就会丢失。我有以下相关代码: 我使用以下命令加载图片OnCreate : 问题答案: 听起来您的代码可以正常工作,但是当活动恢复时,您将丢失图像。您可能需要用onPostResume()而不是

  • 这是使用电子邮件密码注册帐户的所有代码,保存验证电子邮件,将用户数据保存到Firestore数据库中。只有Firestore数据库无法运行。 else { Toast.makeText(register.this, “Error ! ” task.getException().getMessage(), Toast.LENGTH_SHORT).show();progressBar.setVisib

  • 我的应用程序将一些文件保存到设备上的数据/数据文件夹中。保存远程文件后,我会处理这些文件,并将它们复制到其他文件夹中。在之前测试过的所有设备上,All都能正常工作,但在galaxy s3上会生成空指针异常。似乎我不被允许在那个文件夹上写或处理文件!但只有新的星系s3!我也无法使用EclipseDDMS文件浏览器在数据文件夹中找到任何文件,而在模拟器(相同的android版本)中,我可以正确查看所有

  • 问题内容: 我最近开始使用Java,当我需要从jTable开始创建excel文件时,我遇到了apache poi库的一些问题。 我已经阅读了许多线程并提出了一些行不通的代码(即使这是非常简单的东西,并且有很多示例,这使我看起来更加愚蠢),我希望有人可以帮助我。 所以这是问题: a) 为什么要编写Excel文件的for循环不填充每个单元格?(excel文件中唯一包含数据的行是第六行,这也让我想知道为