1、讀取檔案最後一行,當然了,這個方法的速度會比下面那個方便的速度快
RandomAccessFile rf = null;<br />System.out.println(new Date().getTime());<br />try {<br />rf = new RandomAccessFile("d://you.log", "r");<br />long len = rf.length();<br />long start = rf.getFilePointer();<br />long nextend = start + len - 1;<br />String line = "";<br />rf.seek(nextend);<br />int c = -1;<br />int t = 0;<br />while (nextend > start) {<br />c = rf.read();<br />if (c == '/n' || c == '/r') {<br />line = rf.readLine();<br />t++;<br />if (t >= 1 && line != null) {<br />System.out.println(line);<br />return;<br />}<br />nextend--;<br />}<br />nextend--;<br />rf.seek(nextend);<br />if (nextend == 0) {// 當檔案指標退至檔案開始處,輸出第一行<br />System.out.println(rf.readLine());<br />}<br />}<br />} catch (FileNotFoundException e) {<br />e.printStackTrace();<br />} catch (IOException e) {<br />e.printStackTrace();<br />} finally {<br />System.out.println(new Date().getTime());<br />try {<br />if (rf != null)<br />rf.close();<br />} catch (IOException e) {<br />e.printStackTrace();<br />}<br />}
2、讀取檔案最後一行記錄
String string2= null;<br />try {<br />FileReader fr = new FileReader("d://you.log");<br />BufferedReader br = new BufferedReader(fr);<br />String str = null;<br />while ((str = br.readLine()) != null) {<br />string2= str;<br />}<br />br.close();<br />fr.close();<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />System.out.println(string2);
3、在檔案的結尾追加記錄
try {<br />// 開啟一個寫檔案器,建構函式中的第二個參數true表示以追加形式寫檔案<br />FileWriter writer = new FileWriter("d://you.log", true);<br />writer.write("在最後一行寫入資料!" + ";"+"/r/n");<br />writer.close();<br />} catch (IOException e) {<br />e.printStackTrace();<br />}
4、在檔案的結尾追加記錄
try {<br />RandomAccessFile rf = new RandomAccessFile("d://you.log", "rw");<br />long count = rf.length();<br />System.out.println("在最後一行寫入資料!" );<br />rf.seek(count);</p><p>// 如要換行,用 /r/n 次序不要亂<br />rf.writeBytes("ABC /r/n"); //只是寫入字元的時候不會亂碼,如果需要寫入漢字,需要用下面這一行的方法</p><p>String strfile = new String("在最後一行寫入資料GFGFGF!".getBytes(),"ISO_8859-1");<br />rf.writeBytes(strfile+" /r/n");<br />rf.close();</p><p>} catch (Exception e) {<br />System.err.println("讀寫出錯");<br />}