The following code is used to read last non-blank line from a file using java.
{
RandomAccessFile fileHandler = null;
try
{
fileHandler = new RandomAccessFile(file, "r");
long fileLength = file.length() - 1;
StringBuilder sb = new StringBuilder();
for (long filePointer = fileLength; filePointer != -1; filePointer--)
{
fileHandler.seek(filePointer);
int readByte = fileHandler.readByte();
if (readByte == 0xA)
{
if (filePointer == fileLength)
{
continue;
}
else
{
if (!StringUtils.isEmpty(sb.toString().trim()))
break;
}
}
else if (readByte == 0xD)
{
if (filePointer == fileLength - 1)
{
continue;
}
else
{
if (!StringUtils.isEmpty(sb.toString().trim()))
break;
}
}
sb.append((char) readByte);
}
String lastLine = sb.reverse().toString();
return lastLine;
}
catch (java.io.FileNotFoundException e)
{
throw e;
}
catch (java.io.IOException e)
{
throw e;
}
finally
{
fileHandler.close();
}
}