1

ファイルに書き込むときのコードは次のとおりです

Bitmap bitmap;
InputStream is;

try
{
    is = (InputStream) new URL(myUrl).getContent();
    bitmap = BitmapFactory.decodeStream(is);
    is.close();

     //program crashing here
    File f = File.createTempFile(myUrl,null,MyApplication.getAppContext().getCacheDir());
    FileOutputStream fos = new FileOutputStream(f);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.flush();
    fos.close();
}
catch(Exception e)
{
    bitmap = null;
}

そして、これが同じファイルから読み取る私のコードです

Bitmap bitmap;
try
{
    File f = new File(myUrl);
    FileInputStream fis = new FileInputStream(f);
    BufferedInputStream bis = new BufferedInputStream(fis);
    byte[] bitmapArr = new byte[bis.available()];
    bis.read(bitmapArr);
    bitmap = BitmapFactory.decodeByteArray(bitmapArr, 0, bitmapArr.length);
    bis.close();
    fis.close();
}
catch(Exception e)
{
    bitmap = null;
}

コードの最初のチャンクで一時ファイルを作成するときに、プログラムがクラッシュします。

編集: libcore.io.ErrnoException が発生しています

4

1 に答える 1

1

更新:問題を見つけて修正しました。興味のある人は以下を参照してください。

openFileOutput(String, int) および openFileInput(String) メソッドを使用するように変更しました。最初からこのようにするべきでした。

以下は、画像を含む URL からの入力ストリームをビットマップにデコードし、ビットマップを圧縮してファイルに保存し、後でそのファイルからビットマップを取得する作業コードです。

Bitmap bitmap;
InputStream is;

try
{
    is = (InputStream) new URL(myUrl).getContent();
    bitmap = BitmapFactory.decodeStream(is);
    is.close();

    String filename = "file"
    FileOutputStream fos = this.openFileOutput(filename, Context.MODE_PRIVATE);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.close();
}
catch(Exception e)
{
    bitmap = null;
}

Bitmap bitmap;

try
{
    String filename = "file";
    FileInputStream fis = this.openFileInput(filename);
    bitmap = BitmapFactory.decodeStream(fis);
    fis.close();
}
catch(Exception e)
{
    bitmap = null;
}
于 2013-08-07T07:52:47.470 に答える