Я не знаю Clojure, поэтому я не могу сказать, есть ли у вас неправильные детали в вашем коде, но использование StringBuffer
и добавление строки к строке является правильным способом сделать это (ну, используя StringBuilder
инициализируется до ожидаемого конечного размера, если известно, что принесет существенные, но не существенные улучшения).
Если вам не хватает памяти, то, возможно, содержимое вашего BufferedReader слишком велико, чтобы уместиться в вашей памяти, и нет способа разместить его в виде одной строки - в этом случае вам придется либо увеличить свой размер кучи или найдите способ обрабатывать данные по одному небольшому куску за раз.
Кстати, если вы знаете размер вашего ввода, более эффективным методом будет использование CharBuffer и заполнение его с помощью Reader.read () (вы будете нужно обратить внимание на метод возврата и использовать его в цикле).