System.getProperty("line.separator")
возвращает разделитель строки по умолчанию вашей операционной системы. Он не имеет ничего общего с тем, какой разделитель строк используется в данном файле.
Чтобы найти его, откройте файл как поток символов и итерируйте символы, пока не найдете '\r'
или '\n'
. Если вы сначала найдете '\n'
, то у вас есть файл Unix. Если вы найдете '\r'
, а затем '\n'
, у вас есть файл Windows. Если вы обнаружите, что '\r'
не сопровождается '\n'
, у вас есть старый файл Mac.
Это, конечно, предполагает, что файл в первую очередь является текстовым файлом, что в файле используется один тип EOL, и что вам известна кодировка файла. Если вы не знаете кодировку, вы можете использовать тот же алгоритм и использовать поток байтов вместо потока символов.
Обратите внимание, что в большинстве случаев это неактуально, поскольку в Java есть API-интерфейсы, которые читают файл построчно и прекрасно обрабатывают все комбинации EOL.