Ошибка FileOutputStream - PullRequest
       13

Ошибка FileOutputStream

1 голос
/ 27 апреля 2010

У меня была часть кода, которая предполагает получить изображение с веб-сайта и сохранить его на SD-карте.Следующий код работал найти при разработке на SDK1.5.Тем не менее, он не работал сейчас, после того как я изменить его на Android SDK 2.0.У этой линии есть проблема;FileOutputStream fos = new FileOutputStream (filepath + "/" + this.filename);

Вот код, который у меня есть:

  void downloadFile(String fileUrl) {
    URL myFileUrl = null;
    try {
        myFileUrl = new URL(fileUrl);
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        HttpURLConnection conn = (HttpURLConnection) myFileUrl
                .openConnection();
        conn.setDoInput(true);
        conn.connect();

        InputStream is = conn.getInputStream();

        bmImg = BitmapFactory.decodeStream(is);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        String filepath = Environment.getExternalStorageDirectory()
                .getAbsolutePath();
        FileOutputStream fos = new FileOutputStream(filepath + "/"
                + this.filename);
        bmImg.compress(CompressFormat.JPEG, 75, fos);
        fos.flush();
        fos.close();

        Context context = this.getBaseContext();
        new MediaScannerNotifier2(context, filepath + "/" + this.filename,
                "image/jpeg");

        // displaying download completion message
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Wallpaper Downloaded").setCancelable(false)
                .setPositiveButton("ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                                btn_setwall.setEnabled(true);
                                btn_download.setEnabled(false);
                            }
                        });
        AlertDialog alert = builder.create();
        alert.show();
    } catch (Exception e) {
        Log.e("MyLog", e.toString());
    }

}

Ошибка возникает в 3-й ловле.Однако, когда я перемещаю эту строку

FileOutputStream fos = new FileOutputStream (filepath + "/" + this.filename);

во 2-ю попытку / перехват, затемэто произойдет во 2-м улове.Можете ли вы помочь мне в этом?

1 Ответ

0 голосов
/ 07 октября 2010

Может быть, попытаться избавиться от .getAbsolutePath()

Это работает для меня на 2.2:

FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory() + "/" + fileName);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...