Бросал IllegalArgumentException при использовании java.nio - PullRequest
0 голосов
/ 15 апреля 2019

Попытка загрузить файл по 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();
}

enter image description here

Фатальное исключение: 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)

...