Interview Questions

Java - Read last line from a file

The following code is used to read last non-blank line from a file using java.

public String getLastNonBlankLine(File file) throws Exception
        {
                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();
                }
        }