興味深い問題があります。私のアプリケーションは、ファイルをいっぱいに開いて開くように設計されています。私は電子メールで添付する必要があるファイルを圧縮して送信することができます。Android:メールの添付ファイルを正しくダウンロード/保存する
g-メールの「表示」ボタンを使用してファイルを開くために自分のアプリを選択すると、ファイルが正しく解凍されません。ただし、Gmailの「ダウンロード」ボタンを使用してファイルエクスプローラでファイルを開くと、ファイルが正しく解凍されます。
これは私が添付ファイルをダウンロードするために使用するコードです:
// get attachment
try {
attachment = getContentResolver().openInputStream(
getIntent().getData());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// Save it
try {
File root = Environment.getExternalStorageDirectory();
path = root.getPath() + "/PSattachment.psz";
savedFile = new File(path);
FileOutputStream fos = new FileOutputStream(savedFile, false);
BufferedOutputStream os = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int byteRead = 0;
while ((byteRead = attachment.read(buffer)) != -1) {
os.write(buffer, 0, byteRead);
}
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
私が何か間違ったことをやっていますか?前もって感謝します。 (解凍のプロセスは、ファイルエクスプローラと電子メールからの両方の場合で同じですので、ここには何かがあると確信しています。また、ファイルがダウンロードされ、適切なサイズです。 t解凍)。このうち下さい
だけからOSを変更してみてくださいなBufferedOutputStream –
の代わりにするOutputStreamWriter使用してみてください完璧に動作しますBufferedOutputStream to OutputStreamWriter .. os.write(buffer、0、byteRead)はまだ動作します –
読み込み専用バイトを取る[ – Mark