有一个txt文件 我向只读取最后3行的数据 怎么弄?最好给个例子。3Q.
seek()参数是距离读写开头的位置,还是文件开头的位置?
刚接触RandomAccessFile不是很了解,我要一行一行的读取怎么每一行的字节数不是固定的,seek怎么设置 还是用别的方法?
还有比如说 我readLine从末尾读了1行 那么再用getFilePointer()获取读写位置就在倒数第二行了。
seek()参数是距离读写开头的位置,还是文件开头的位置?
刚接触RandomAccessFile不是很了解,我要一行一行的读取怎么每一行的字节数不是固定的,seek怎么设置 还是用别的方法?
还有比如说 我readLine从末尾读了1行 那么再用getFilePointer()获取读写位置就在倒数第二行了。
尝试RandomAccessFile吧。它可以帮助你像c一样定位文件指针
/*
* 打印一个给定的TXT文件的后20行
*/
public static void readTxt() {
Map dataMap = new HashMap();
FileReader file;
int num = 0;
try {
file = new FileReader("D:/data.txt");
BufferedReader in = new BufferedReader(file);
while (in.ready()) {
// 读入每行数据,dataMap中始终只会保存最后读到的20条记录
dataMap.put((num % 20), in.readLine());
num++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} if (num < 20) {
// 文件中记录不超过20行
for (int i = 0; i < num; ++i) {
System.out.println(dataMap.get(i));
}
} else {
int key = num % 20;
for (int i = key; i < 20; ++i) {
System.out.println(dataMap.get(i));
}
for (int i = 0; i < key; ++i) {
System.out.println(dataMap.get(i));
}
}
}楼主参考,这是打印倒数20行的一种方法