android - 无法在我的设备 android 上写入 SD 卡

标签 android file storage external

我正在尝试从服务器下载图片并将其保存到 sd 卡但失败了

当我在模拟器或其他设备上尝试它时,它工作正常,但我的设备却不行。我的设备是 galaxy mini gt-s5570

这是我的代码:

public String downloadImage(String imageUrl, String id, String folder) {
        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/FBLogoQuiz/" + folder + "/";
        Log.d("path", path);
        File FBLogoQuiz = new File(path);
        FBLogoQuiz.mkdirs();
        FBLogoQuiz.mkdir();
        String data = "";
        try {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);

            // create a File object for the parent directory
            File FBLogoQuizDirectory = new File(path, id + ".png");

            // have the object build the directory structure, if needed.
            FBLogoQuizDirectory.createNewFile();
            data = String.valueOf(String.format(path + id + ".png"));

            FileOutputStream stream = new FileOutputStream(data);

            ByteArrayOutputStream outstream = new ByteArrayOutputStream();
            myBitmap.compress(Bitmap.CompressFormat.PNG, 85, outstream);
            byte[] byteArray = outstream.toByteArray();

            stream.write(byteArray);
            stream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return data;

    }

list .xml

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

日志:

05-24 00:26:10.099: W/System.err(28984): java.io.IOException: No such file or directory
05-24 00:26:10.099: W/System.err(28984):    at java.io.File.createNewFileImpl(Native Method)
05-24 00:26:10.109: W/System.err(28984):    at java.io.File.createNewFile(File.java:1160)
05-24 00:26:10.109: W/System.err(28984):    at com.nileworx.footballlogoquiz.GetUpdatesService.downloadImage(GetUpdatesService.java:229)
05-24 00:26:10.109: W/System.err(28984):    at com.nileworx.footballlogoquiz.GetUpdatesService.getUpdates(GetUpdatesService.java:197)
05-24 00:26:10.109: W/System.err(28984):    at com.nileworx.footballlogoquiz.GetUpdatesService.onHandleIntent(GetUpdatesService.java:127)
05-24 00:26:10.109: W/System.err(28984):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
05-24 00:26:10.109: W/System.err(28984):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-24 00:26:10.109: W/System.err(28984):    at android.os.Looper.loop(Looper.java:123)
05-24 00:26:10.109: W/System.err(28984):    at android.os.HandlerThread.run(HandlerThread.java:60)

最佳答案

createNewFile() 在创建文件时不会创建新目录。你需要做的:

FBLogoQuizDirectory().getParentFile().mkdirs();

在创建文件之前。

关于android - 无法在我的设备 android 上写入 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838644/

相关文章:

android - 按下安卓按钮状态

android - CollapsingToolbarLayout 导致 RecyclerView 底部在屏幕下方

C fwrite 错误处理

java - 如何创建多个文件,为每个文件生成随机名称

Azure 客户端加密

java - 如何将我的自定义 View 添加到 xml 中的布局?

java - getAction( ) 或 Intent 上的 NullPointerException

python - 文件处理,写作,阅读

api - 用于 SAN/NAS 系统的 RESTful API

能否用C知道运行时是否对磁盘进行了文件操作?