Моя конечная цель - конвертировать файл из ANSI в UTF-8.Для этого я использую некоторый код с Java:
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ConvertFromAnsiToUtf8 {
public static void main(String[] args) throws IOException {
try {
Path p = Paths.get("C:\\shared_to_vm\\test_encode\\test.csv");
ByteBuffer bb = ByteBuffer.wrap(Files.readAllBytes(p));
CharBuffer cb = Charset.forName("windows-1252").decode(bb);
bb = Charset.forName("UTF-8").encode(cb);
Files.write(p, bb.array());
} catch (Exception e) {
System.out.println(e);
}
}
}
Код отлично работает, когда я тестирую его на небольших файлах.Мой файл конвертируется из ANSI в UTF-8, и все символы распознаются и хорошо кодируются.Но как только я пытаюсь использовать его в файле, который мне нужно преобразовать, я получаю сообщение об ошибке java.lang.OutOfMemoryError: пространство кучи Java.
Насколько я понимаю, я получил 1,5 миллиона строк в своем файле, так что я уверен, что создал слишком много объектов в своем приложении.
Конечно, я проверил, что означает эта ошибка и как я могу ее исправить (например, здесь или здесь ), но улучшается объем памяти моегоJVM единственный способ решить это?И если это так, сколько еще я должен использовать?
Любая помощь (совет, совет, ссылка или другое) будет принята с благодарностью!