Socket InputStream から取得したバイト配列を使用して複数のファイルを作成するアプリがあります。1 つのファイルを保存するだけでファイルは完全に保存されますが、1 つのファイルを保存してからファイル ストリームを再インスタンス化して別のファイルを保存すると、最初のファイルは破損し、2 番目のファイルは完全に保存されます。2 つのファイルをテキスト エディターで開いたところ、(約...) 最初のファイルの最初の 1/5 は空白ですが、2 番目のファイルはいっぱいで、両方とも同じサイズのプロパティ (9,128,731 バイト) を持っているようです。次の例はシナリオの複製ですが、破損の結果は同じです。
FileOutputStream outStream;
outStream = new FileOutputStream("/mnt/sdcard/testmp3.mp3");
File file = new File("/mnt/sdcard/test.mp3");
FileInputStream inStream = new FileInputStream(file);
byte[] buffer = new byte[9128731];
inStream.read(buffer);
outStream.write(buffer, 0, buffer.length);
inStream.close();
outStream.flush();
outStream.close();
outStream = null;
outStream = new FileOutputStream("/mnt/sdcard/testmp32.mp3");
outStream.write(buffer, 0, buffer.length);
inStream.close();
outStream.flush();
outStream.close();
outStream = null;
この EXACT コードを通常の Java アプリケーションで試したところ、両方のファイルが問題なく保存されました。Androidがこれを行っている理由を誰かが知っていますか?
どんな助けでも大歓迎です