public
static
void
main(String[] args)
throws
Exception {
File file =
new
File(
"E:/a.txt"
);
long
start = System.currentTimeMillis();
String lastLine = readLastLine(file,
"gbk"
);
long
delt = System.currentTimeMillis() - start;
System.out.println(lastLine);
System.out.println(
"读取时间(毫秒):"
+ delt);
file =
new
File(
"E:/b.txt"
);
start = System.currentTimeMillis();
lastLine = readLastLine(file,
"gbk"
);
delt = System.currentTimeMillis() - start;
System.out.println(lastLine);
System.out.println(
"读取时间(毫秒):"
+ delt);
}
public
static
String readLastLine(File file, String charset)
throws
IOException {
if
(!file.exists() || file.isDirectory() || !file.canRead()) {
return
null
;
}
RandomAccessFile raf =
null
;
try
{
raf =
new
RandomAccessFile(file,
"r"
);
long
len = raf.length();
if
(len == 0L) {
return
""
;
}
else
{
long
pos = len -
1
;
while
(pos >
0
) {
pos--;
raf.seek(pos);
if
(raf.readByte() ==
'\n'
) {
break
;
}
}
if
(pos ==
0
) {
raf.seek(
0
);
}
byte
[] bytes =
new
byte
[(
int
) (len - pos)];
raf.read(bytes);
if
(charset ==
null
) {
return
new
String(bytes);
}
else
{
return
new
String(bytes, charset);
}
}
}
catch
(FileNotFoundException e) {
}
finally
{
if
(raf !=
null
) {
try
{
raf.close();
}
catch
(Exception e2) {
}
}
}
return
null
;
}
网友评论