I think the problem is here:
while ((line = bf.readLine()) != null)
{
outStr.append(line);
}
The readLine
see's the newline char but doesn't include it in the returned value for line
The problem is worse than you think, perhaps.
readLine()
gets all the characters up to, but not including, a newline (or some variety of returns and linefeed characters) OR the end of file. So you don't know if the last line you get had a newline on the end or not.
This might not matter, and if so, you can just add this following the other append:
outStr.append('\n');
Some files might end up with an extra line ending at the end of file.
If it does matter, you will need to use read()
and then output all the characters you receive. In that case, you might end up with the infamous "What's at the end of the line?" problem you allude to between Windows, Linux and the MacOS and the way they use different combinations of return and new-line characters to end lines.