Шифрование большого файла с помощью 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();
Насколько я могу судить, причина такого поведения заключается в том, что он пытается прочитать весь файл сразу, зашифровать его и сохранить в другом байтовом массиве, а не буферизовать и передавать его. Может кто-нибудь помочь мне с некоторыми советами по коду?
Я новичок в программировании, поэтому я не очень много знаю, любая помощь будет оценена.