package log;<br />import java.io.File;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.io.RandomAccessFile;<br />public class Test {</p><p>public static void main(String args[])<br />{<br />try {<br />File file=new File("log/1.txt");<br />if(!file.exists())<br />file.createNewFile();<br />FileOutputStream fos=new FileOutputStream(file);<br />fos.write("中文/t英文/r/n".getBytes());<br />fos.flush();</p><p>RandomAccessFile raf=new RandomAccessFile(file,"r");</p><p>//raf.writeUTF("中文/t英文/r/n");<br />//raf.seek(0);<br />byte buff[]=new byte[20];<br />int len=raf.read(buff);<br />//String str=new String(raf.readLine().getBytes(),"UTF16");<br />String str=new String(buff,0,len,"GBK");<br />System.out.println(str);<br />//raf.seek(raf.getFilePointer());<br />} catch (IOException e) {<br />e.printStackTrace();<br />}<br />}<br />}<br />
在Eclipse環境下預設編碼方式為GBK(可以設定為其他,具體方式為Window->Preference->General->Workspace中的TextfileEncoding),所以在調用檔案寫入流寫檔案時預設寫入的是GBK編碼,所以在讀取時構造讀取流時也採用GBK即可。。。
另外,RandomAcessFile可以設定讀取標記,依次進行讀取而不會發生重複讀取,直至檔案讀取結束:
raf.seek(raf.GetFilePointer());
在每次讀取之後加入以上代碼即可在下次讀寫時從上次讀取的位置進行!