У меня есть приложение, которое создает несколько файлов, используя байтовый массив, полученный из Socket InputStream. Файл отлично сохраняется, когда я просто сохраняю один файл, но если я сохраняю один файл, а затем повторно создаю экземпляр файлового потока и сохраняю другой файл, первый файл будет поврежден, а второй файл будет сохранен идеально. Я открыл два файла в текстовом редакторе, и кажется (примерно ...) первая 1/5 первого файла - это пробелы, но второй файл заполнен, и они оба имеют одинаковые свойства размера (9 128 731 байт). Следующий пример представляет собой дублирование senario, но с тем же результатом искажения:
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-приложении, и оба файла были сохранены без проблем. Кто-нибудь знает, почему андроид делает это?
Любая помощь будет принята с благодарностью