Попытка загрузить файл по URL.Для этого используется библиотека java.nio.Приведенный выше код прекрасно работает для SDK 24 и выше, но получает исключение IllegalArgumentException для Android SDK 23 и ниже.Я получаю сообщение об ошибке при попытке передать данные.Дорогие друзья, не могли бы вы уточнить, в чем проблема.
private void downloadFile(final String itemUrl) {
new Thread(new Runnable() {
@Override
public void run() {
ReadableByteChannel readableByteChannel = null;
FileOutputStream fOutStream = null;
String root =
getApplicationContext().getApplicationInfo().dataDir;
File myDir = new File(root + "/downloadedSongs");
if (!myDir.exists()) {
myDir.mkdirs();
}
File file = new File(myDir, itemTitle);
if (file.exists()) {
file.delete();
}
try {
URL url = new URL(itemUrl);
readableByteChannel =
Channels.newChannel(url.openStream());
fOutStream = new FileOutputStream(file);
fOutStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
} catch (IOException e) {
orderAction = Enums.OrderAction.Delete;
} catch (IllegalArgumentException e) {
orderAction = Enums.OrderAction.Delete;
Crashlytics.logException(e);
} finally {
try {
if (fOutStream != null) {
fOutStream.close();
}
if (readableByteChannel != null) {
readableByteChannel.close();
}
} catch (IOException ioExObj) {
orderAction = Enums.OrderAction.Delete;
}
closeNotification(orderAction);
}
}
}).start();
}
Фатальное исключение: java.lang.IllegalArgumentException: position = 0 count = 9223372036854775807 на java.nio.FileChannelImpl.transferFrom (FileChannelImpl.Java: 370) в am.itsoft.youtomp3.services.DnlService $ 1.run (DnlService.java:169) в java.lang.Thread.run (Thread.java:818)