[转]java 从后往前读文件 - [技术]

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://momy.blogbus.com/logs/61391747.html

 

package test; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile;

public class FromEndRF { 

public static void read(String filename) {   

   read(filename, "GBK"); 

}

 

public static void read(String filename, String charset) {

    RandomAccessFile rf = null;   

try {     

rf = new RandomAccessFile(filename, "r");     

long len = rf.length();     

long start = rf.getFilePointer();     

long nextend = start + len - 1;    

  String line;     

rf.seek(nextend);    

  int c = -1;     

while (nextend > start) {      

  c = rf.read();      

  if (c == '\n' || c == '\r') {         

    line = rf.readLine();        

  if (line != null) {           

           System.out.println(new String(line.getBytes("ISO-8859-1"), charset));         

   }else {            

System.out.println(line);         

}         

 

nextend--;       

}       

nextend--;       

rf.seek(nextend);      

  if (nextend == 0) {// 当文件指针退至文件开始处,输出第一行        

  System.out.println(rf.readLine());       

}     

}   

} catch (FileNotFoundException e) {     

e.printStackTrace();  

  } catch (IOException e) {   

   e.printStackTrace();   

} finally {     

try {       

if (rf != null)     

     rf.close();     

} catch (IOException e) {    

    e.printStackTrace();     

}   

 

}

  public static void main(String args[]) {     read("d:\\2.txt", "gbk");   } }

posted @ 2012-08-15 23:48  优秀程序缘  阅读(1420)  评论(1编辑  收藏  举报