您的位置:首页 > 其它

关于RandomAccessFile

2011-09-02 10:42 218 查看
今天一个朋友问了我一个javase的知识,是关于I/O的操作,他要在文件的末尾追加一些内容,在这当中遇到了一些问题。

朋友用的是RandomAccessFile来做写入,这个类有两个构造方法

RandomAccessFile(File file,

String mode)


创建从中读取和向其中写入(可选)的随机访问文件流,该文件由
File
参数指定。
RandomAccessFile(String name,

String mode)


创建从中读取和向其中写入(可选)的随机访问文件流,该文件具有指定名称。
如果要在文件的结束点追加内容,那就用第一个构造方法,调用RandomAccessFile的seek(long lg)方法,该方法传递进去一个long型的数据,我们正好可以把file.length()传递进去,这样就按照要求在文件末尾追加内容。

但朋友遇到了乱码问题,他是用的RandomAccessFile的writeBytes(String s)方法写入内容,我建议他用write(byte[] b)方法,例如:String s = "中文"; raf.write(s.getBytes());这样就很好的解决了乱码问题。关于这两种方法,许多人认为好像差不多,其实是完全相反的方式,writeBytes(String s)方法将中文拆成两个字节写进文本,所以会造成乱码,write(byte[] b)方法是将每两个字节合成一个中文并写时文本,所以不会出现乱码。

我们还可以调用writeUTF(String str)方法避免乱码。

过了一会,又遇到了问题,问我怎么解决换行的问题,“写了/n怎么还不管用啊”。我告诉他要用“/r/n”才行。

/r即回车,回到一行的开头。/n即换行,另起一行。这大家都是知道的。

我们在程序里写文件的时候所谓的“回车符”确切的说应该是“回车换行符”。

在windows系统下,回车换行符号是“/r/n”,但是在Linux等系统下是没有“/r”符号的,我们一般都是在window下,所以说在用程序写文件是应该是“/r/n”才对。

http://blog.csdn.net/liuhe688
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: