ปลายยาว, หมายเลขยาว, ไฟล์ไฟล์, ชุดอักขระสตริง
คำอธิบายพารามิเตอร์ 4 รายการ
end เทียบเท่ากับพิกัด, tail คือจุดเริ่มต้นขึ้นไป, num คือจำนวนบรรทัดที่อ่าน และชุดอักขระอักขระไฟล์เป้าหมายของไฟล์มีค่าเริ่มต้นเป็น UTF8
หาก end เป็นโมฆะ หมายความว่าการเริ่มจากจุดสิ้นสุดของไฟล์ขึ้นไป
แมป m=FileUtil.tail(null,10,file,null)//อ่าน 10 บรรทัดสุดท้ายของไฟล์ ผลลัพธ์จะเป็น m.get(FileUtil.ARR)
FileUtil.tail(m.get(FileUtil.POINT),3,file,null)//อ่านบรรทัดที่ 11 ถึง 13 จากบรรทัดสุดท้ายของไฟล์ ขึ้นไป
คัดลอกรหัสรหัสดังต่อไปนี้:
FileUtil คลาสสาธารณะ {
ขั้นตอนยาวสุดท้ายแบบคงที่ส่วนตัว = 5,000;
สาธารณะคงสุดท้าย String ARR = "arr";
สาธารณะคงสุดท้าย String POINT = "จุด";
ส่วนท้ายของแผนที่สาธารณะแบบคงที่ (ปลายยาว, หมายเลขยาว, ไฟล์ไฟล์, ชุดอักขระสตริง) พ่นข้อยกเว้น {
ถ้า(num<=0||(สิ้นสุด!=null&&สิ้นสุด<0)){
โยน IllegalArgumentException ใหม่ ();
-
แผนที่ map=new HashMap();
RandomAccessFile ตามมาตรฐาน=null;
พยายาม {
acc = new RandomAccessFile(file, "r");
long temp_end = (end == null ? acc.length() : end);
ยาว my_point = temp_end > ขั้นตอน ? (temp_end-step) : 0;
acc.seek(my_point);
LinkedList<Object[]> คิว = ใหม่ LinkedList<Object[]>();
สตริงอุณหภูมิ;
อินท์n=0;
ในขณะที่((temp=acc.readLine())!=null){
ถ้า(++n==1&&my_point!=0){
ดำเนินการต่อ;
-
วัตถุ [] วัตถุ = วัตถุใหม่ [2];
จุดยาว = acc.getFilePointer();
ถ้า(จุด>=temp_end&&end!=null){break;}
วัตถุ[0]=จุด;
วัตถุ[1]=สตริงใหม่(temp.getBytes("8859_1"),ชุดอักขระ);
ถ้า(queue.size()==num){
คิว.โพลล์();
-
คิวข้อเสนอ (วัตถุ);
-
ถ้า(queue.size()<num&&my_point>0){
ยาวlast_num=num-queue.size();
ส่วนหัวของวัตถุ [] = Queue.peek();
if(header==null){throw new RuntimeException("FileUtil step:"+step+" not longเพียงพอ");}
แผนที่ m = tail ((ยาว) ส่วนหัว [0], Last_num, ไฟล์, ชุดอักขระ);
map.put(จุด,m.get(จุด));
map.put(ARR,ArrayUtils.addAll((Object[])m.get(ARR),queue.toArray()));
}else if(queue.size()>0){//จำนวนแถวที่ได้รับไม่เพียงพอ และยังไม่ถึง TOP
map.put(POINT,queue.peek()[0]);
map.put(ARR,คิว.toArray());
-
}ในที่สุด {
ถ้า(ตาม!=null){
พยายาม {
ตามมาตรฐานปิด();
} จับ (IOException จ) {
e.printStackTrace();
-
-
-
แผนที่ขากลับ;
-
-