Я не могу ответить (1), но я дам (2) шанс.
Как ни странно, я думаю, ваш код работал только по стечению обстоятельств. Character.LINE_SEPARATOR
обозначает категорию Unicode; он не должен быть символом новой строки платформы, но просто имеет значение 13 , которое (как вы, вероятно, знаете) равно '\r'
. Если я правильно помню, Mac, начиная с OS X, использовал '\n'
для перевода строки, поэтому он не работает.
В прошлом я получил символ разделителя строк: System.getProperty("line.separator")
. Возвращает String
, поэтому он может не подойти. Поскольку он, похоже, работает с '\r'
в Windows, я предполагаю, что простой проверки для '\n'
также будет достаточно. В качестве альтернативы вы можете использовать BufferedReader
, обернутый вокруг StringReader
, как предложил Wouter Lievens.