1

ビットマップをSDカードに保存したいアプリを開発中です。多くの例やその他の質問を見て、次のコードを作成しました。

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
String dirPath = Environment.getExternalStorageDirectory().toString() + "/myFolder";
File dir = new File(dirPath);
dir.mkdirs();
String fileName = "bitmapname.jpg";
File file = new File(dirPath, fileName);
FileOutputStream fileOutPutStream;
try {
    boolean created = file.createNewFile();
    Log.d("Checks", "File created: " + created);
    fileOutPutStream = new FileOutputStream(file);
    fileOutPutStream.write(byteArrayOutputStream.toByteArray());
    fileOutPutStream.close();
} catch (FileNotFoundException e) {
    Log.d("Checks", "FileNotFoundException");
    e.printStackTrace();
} catch (IOException e) {
    Log.d("Checks", "IOException");
    Log.d("Checks", e.getMessage());
    e.printStackTrace();
}

このコードの何が問題なのかわかりません。エラーは発生せず、アプリはクラッシュすることなく実行されます。ただし、電話をコンピューターに接続して SD カードを開くと、「myFolder」フォルダーが表示されず、保存した画像がどこにも見つかりません。これがなぜなのかについて何か考えはありますか?

編集:保存されたビットマップが Android ギャラリーに表示され、実際に「myFolder」というフォルダーにあることに気付きました。ただし、電話をコンピューターに接続してSDカードを参照しても、まだ表示されません。

4

2 に答える 2

1

Are you sure you are setting the permission to write to SD card? Try setting this one:

   WRITE_EXTERNAL_STORAGE

Edit: Ok, try this:

    Environment.getExternalStorageDirectory().getAbsolutePath()

Instead of:

    Environment.getExternalStorageDirectory().toString()

Or even create a directory like this:

    File dir = new File(Environment.getExternalStorageDirectory() + 
                        File.separator + 
                        "myFolder");
    dir.mkdirs();
于 2013-05-18T21:14:46.177 に答える
1

私の経験から、 のfileOutPutStream.flush();前に を忘れたときに同様の発行がありましたclose()

于 2013-05-18T20:36:49.557 に答える