Я довольно новичок в exoplayer, поэтому приношу свои извинения, если это новый вопрос ie.
Я пытаюсь использовать CacheDataSource для чтения данных из кэша, добавить его к данным, которые не являются все же кэшируем и записываем их в файл.
Мой код выглядит примерно так:
byte[] buffer = new byte[length];
DefaultHttpDataSource ds = new DefaultHttpDataSource(userAgent);
CacheDataSource dataSource = new CacheDataSource(cache, ds);
dataSource.open(new DataSpec(uri, 0, length, key));
dataSource.read(buffer,0, buffer.length)
dataSource.close();
ds.close();
FileOutputStream fos= new FileOutputStream(path);
fos.write(buffer);
fos.close();
Однако в файл записываются только кэшированные части потока.
- uri указывает на mp3-файл на s3.
- length - длина источника в байтах
- key - индекс кэша
ОБНОВЛЕНИЕ:
Оказывается, что-то вроде этого работает отлично:
byte[] buffer = new byte[1024];
DefaultHttpDataSource ds = new DefaultHttpDataSource(userAgent);
CacheDataSource dataSource = new CacheDataSource(cache, ds);
dataSource.open(new DataSpec(uri, 0, length, key));
FileOutputStream fos = new FileOutputStream(path);
int read = 0;
while( (read = dataSource.read(buffer,0, buffer.length)) > 0) {
fos.write(buffer, 0, read);
}
dataSource.close();
ds.close();
fos.close();
Теперь мой вопрос: почему не работает весь поток ответов в байтовом массиве? Я что-то упускаю здесь очевидное?