Ujung panjang, angka panjang, File file, Rangkaian karakter string
4 deskripsi parameter
end setara dengan koordinat, tail adalah titik awal ke atas, num adalah jumlah baris yang dibaca, dan karakter set karakter file target file diatur secara default ke UTF8
Jika end adalah null, itu berarti mulai dari akhir file ke atas.
Map m=FileUtil.tail(null,10,file,null)//Baca 10 baris terakhir file, hasilnya di m.get(FileUtil.ARR)
FileUtil.tail(m.get(FileUtil.POINT),3,file,null)//Baca baris ke-11 hingga ke-13 dari baris terakhir file. Sebenarnya, ini berarti membaca 3 baris ke atas setelah baris ke-10 di atas.
Copy kode kodenya sebagai berikut:
FileUtil kelas publik {
langkah panjang akhir statis pribadi=5000;
String akhir statis publik ARR="arr";
String akhir statis publik POINT="titik";
ekor Peta statis publik (Ujung panjang, jumlah panjang, File file, Kumpulan karakter string) memunculkan Pengecualian{
if(angka<=0||(akhir!=null&&akhir<0)){
melempar IllegalArgumentException();
}
Peta peta= HashMap baru();
RandomAccessFile acc=null;
mencoba {
acc = new RandomAccessFile(file, "r");
long temp_end = (end == null ? acc.length() : end);
panjang my_point = temp_end > langkah ? (temp_end-step): 0;
acc.seek(titik_saya);
LinkedList<Object[]> antrian = new LinkedList<Object[]>();
suhu string;
ke dalam n=0;
while((temp=acc.readLine())!=null){
if(++n==1&&titik_saya!=0){
melanjutkan;
}
Objek[] objek=Objek baru[2];
titik panjang = acc.getFilePointer();
if(titik>=temp_end&&end!=null){break;}
objek[0]=titik;
objek[1]=String baru(temp.getBytes("8859_1"),rangkaian karakter);
if(antrian.ukuran()==angka){
antrian.poll();
}
antrian.penawaran(objek);
}
if(antrian.ukuran()<angka&&titik_saya>0){
long last_num=num-queue.size();
Objek[] header = antrian.peek();
if(header==null){throw new RuntimeException("Langkah FileUtil:"+langkah+" tidak cukup lama");}
Peta m = tail((Panjang)header[0],angka_akhir,file,rangkaian karakter);
peta.put(POINT,m.get(POINT));
map.put(ARR,ArrayUtils.addAll((Objek[])m.get(ARR),queue.toArray()));
}else if(queue.size()>0){//Jumlah baris yang diperoleh tidak cukup dan belum mencapai TOP
map.put(POINT,queue.peek()[0]);
map.put(ARR,queue.toArray());
}
}Akhirnya {
jika(acc!=null){
mencoba {
acc.close();
} tangkapan (IOException e) {
e.printStackTrace();
}
}
}
peta kembali;
}
}