Я тестировал свой код с файлами меньше этого (10mb, 100mb, 500mb), и шифрование работает. Однако я столкнулся с проблемами с файлами размером более 1 ГБ. Я создал большой файл (около 2 гб), и я хочу зашифровать его с помощью AES с помощью JAVA, но я столкнулся с этой ошибкой:
"Исключение в потоке" main "java.lang.OutOfMemoryError: Java heap space"
Я попытался увеличить доступную память, используя -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();
Насколько я могу судить, причина, по которой он ведет себя таким образом, заключается в том, что он пытается сразу прочитать весь файл, зашифровать его и сохранить в другой массив байтов вместо буферизации и потоковой передачи. кто-нибудь поможет мне с некоторыми подсказками кода?
Я новичок в кодировании, поэтому я действительно мало знаю, любая помощь будет оценена.