关于RandomAccessFile

 

今天一个朋友问了我一个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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值