Использование Environment.getEternalStorageDirectory вместо "/ sdcard /", проблемы - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь указать на внешнее хранилище, т.е. sdcard, но, насколько я понимаю, возможно, что sdcard не всегда находится в /mnt/sdcard, поэтому я пытаюсь использовать вместо этого функцию getExternalStorageDirectory.

Вот текущий код:

        File sdCard = Environment.getExternalStorageDirectory();
    File dir = new File (sdCard.getAbsolutePath() + "/dir/dir");
    dir.mkdirs();
    AssetManager assetManager = getAssets();
        String[] files = null;

        try {
            files = assetManager.list("");
        } catch (IOException e) {
            Log.e("tag", e.getMessage());
        }
        for(String filename : files) {
            if (filename.equals(passedImageVar)) {
            InputStream in = null;
            OutputStream out = null;
            try {
              in = assetManager.open(filename);
              out = new FileOutputStream(dir + "routeimage.gif");
              copyFile(in, out);
              in.close();
              in = null;
              out.flush();
              out.close();
              out = null;
            } catch(Exception e) {
                Log.e("tag", e.getMessage());
            } }      
        }

Этот код используется, когда проверяется переменная, и если true, он копирует изображение из папки ресурсов на SD-карту, перезаписывая routeimage.gif каждый раз при щелчке по новой строке. Если я использую:

out = new FileOutputStream("/sdcard/" + "routeimage.gif");

код работает отлично. Он каждый раз перезаписывает routeimage.gif новым изображением, но когда я пытаюсь использовать внешнюю переменную, он запускает выходной файл только один раз, и все.

...