RandomAccessFile类(三)
向一个文本中写入数据
使用byte类型数组写入数据到文本中
package com.tedu.raf;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 向一个文件中写入文本,尤其是中文文本
* @author Wildmess
*
*/
public class WriteStringDemo {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("raf2.txt", "rw");
String str = "中华人民共和国!";
/*
* String对象的方法
* byte[] getBytes();
* 功能是将字符串中的字符转换成字节
* 按照系统默认的字符集
*
* byte[] getBytes(String csn)
* 功能是将字符串中的字符转换成字节
* 但是是按照指定的字符集
*/
//可能部分电脑使用默认字符集,可以直接存入中文
//byte[] data = str.getBytes();
//raf.write(data);
//但部分不行,就要使用下面的代码,自己指定字符集
byte[] data = str.getBytes("GBK");
raf.write(data);
System.out.println("写入完成!");
raf.close();
}
}
PS:可以使用下面的方式查看自己的默认字符集并进行更改:
1.选择自己使用的文件,右键->Properties
2.红框中的就是自己目前所在使用的字符集编码,可在Other中选择自己想默认使用。
向一个文本中读出数据
package com.tedu.raf;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 向一个文件中读出文本,尤其是中文文本
* @author Wildmess
*
*/
public class ReadStringDemo {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("raf2.txt", "r");
byte[] data = new byte[(int)raf.length()];
//读取文件中的所有字节到data数组
raf.read(data);
/*
* String类中有一个构造方法
* String(byte[] data ,String scn)
* data是字节数值,会按照scn指定的字符集解析字符,并创建对象
*/
String str = new String(data,"GBK");
System.out.println(str);
raf.close();
}
}