Ответ 1
Попробуйте использовать Scanner класс:
String line = Scanner(file).useDelimiter("\r\n").next();
Javadoc для BufferedReader.readLine() говорит:
Линия считается завершенной любым из строк ('\n'), возврат каретки ('\ r') или возврат каретки, после чего сразу возвращается строка.
Мне нужно немного лучше контролировать, чем это (например, я хотел бы указать, что конец строки "\ r\n", так что "\n" сам по себе не завершает строку).
Есть ли какая-нибудь функция JDK или библиотеки, которая делает это?
Попробуйте использовать Scanner класс:
String line = Scanner(file).useDelimiter("\r\n").next();
В зависимости от того, в каком случае использования BufferedReader вам может понадобиться BufferedReader, вы можете перейти к использованию класса Scanner, который может читать текст из разных источников (файлы, потоки) и имеет прямой метод, который определяет разграничение. См. http://java.sun.com/j2se/1.5.0/docs/api/java/util/Scanner.html#useDelimiter(java.lang.String)
Я не знаю ни одного стандартного API, который бы это сделал.
Это возможно для простого чтения в файле WHOLE в String, а затем разбить его на нужный конечный символ.
for(String line: testFile.split("\r\n")){
...
}