Шифрование большого файла с помощью AES с использованием JAVA

Я проверил свой код с файлами меньше этого (10 МБ, 100 МБ, 500 МБ), и шифрование работает. Тем не менее, я сталкиваюсь с проблемами с файлами более 1 ГБ. Я создал большой файл (около 2 ГБ) и хочу зашифровать его с помощью AES с использованием JAVA, но я сталкиваюсь с этой ошибкой:

«Исключение в потоке» main «java.lang.OutOfMemoryError: пространство кучи Java»

Я пытался увеличить доступную память с помощью -Xmx8G, но без кубиков. Часть моего кода выглядит следующим образом

    File selectedFile = new File("Z:\\dummy.txt");         
    Path path = Paths.get(selectedFile.getAbsolutePath());       
    byte[] toencrypt = Files.readAllBytes(path);       
    byte[] ciphertext = aesCipherForEncryption.doFinal(toencrypt);
    FileOutputStream fos = new FileOutputStream(selectedFile.getAbsolutePath());
    fos.write(ciphertext);
    fos.close();

Насколько я могу судить, причина такого поведения заключается в том, что он пытается прочитать весь файл сразу, зашифровать его и сохранить в другом байтовом массиве, а не буферизовать и передавать его. Может кто-нибудь помочь мне с некоторыми советами по коду?

Я новичок в программировании, поэтому я не очень много знаю, любая помощь будет оценена.

Ответы на вопрос(2)

Ваш ответ на вопрос