package colloid.model;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class LogUtil {
public static String tail(File file) throws StringIndexOutOfBoundsException {
RandomAccessFile fileHandler = null;
try {
fileHandler = new java.io.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 {
break;
}
} else if (readByte == 0xD) {
if (filePointer == fileLength - 1) {
continue;
} else {
break;
}
}
sb.append((char) readByte);
}
String lastLine = sb.reverse().toString();
fileHandler.close();
return lastLine;
} catch (java.io.FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (java.io.IOException e) {
e.printStackTrace();
return null;
} finally {
try {
if (fileHandler != null) {
fileHandler.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static String tail(File file, int lines) throws StringIndexOutOfBoundsException {
RandomAccessFile fileHandler = null;
try {
fileHandler = new java.io.RandomAccessFile(file, "r");
long fileLength = file.length() - 1;
StringBuilder sb = new StringBuilder();
int line = 0;
for (long filePointer = fileLength; filePointer != -1; filePointer--) {
fileHandler.seek(filePointer);
int readByte = fileHandler.readByte();
if (readByte == 0xA) {
if (line == lines) {
if (filePointer == fileLength) {
continue;
} else {
break;
}
}
} else if (readByte == 0xD) {
line = line + 1;
if (line == lines) {
if (filePointer == fileLength - 1) {
continue;
} else {
break;
}
}
}
sb.append((char) readByte);
}
sb.deleteCharAt(sb.length() - 1);
String lastLine = sb.reverse().toString();
return lastLine;
} catch (java.io.FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (java.io.IOException e) {
e.printStackTrace();
return null;
} finally {
try {
if (fileHandler != null) {
fileHandler.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}