К сожалению, в Java нет многострочных строковых литералов. Вы должны либо объединить строковые литералы (используя + или StringBuilder как два наиболее распространенных подхода к этому), либо прочитать строку из отдельного файла.
Для больших многострочных строковых литералов я склонен использовать отдельный файл и читать его с использованием getResourceAsStream()
(метод класса Class
). Это облегчает поиск файла, так как вам не нужно беспокоиться о текущем каталоге по сравнению с тем, где был установлен ваш код. Это также упрощает упаковку, потому что вы можете хранить файл в вашем jar-файле.
Предположим, вы в классе Foo. Просто сделайте что-то вроде этого:
Reader r = new InputStreamReader(Foo.class.getResourceAsStream("filename"), "UTF-8");
String s = Utils.readAll(r);
Еще одно неудобство заключается в том, что в Java нет стандартного метода «читать весь текст из этого Reader в строку». Это довольно легко написать, хотя:
public static String readAll(Reader input) {
StringBuilder sb = new StringBuilder();
char[] buffer = new char[4096];
int charsRead;
while ((charsRead = input.read(buffer)) >= 0) {
sb.append(buffer, 0, charsRead);
}
input.close();
return sb.toString();
}