RandomAccessFileDemo3  向文件中写出一组字节的方法



/**



 *    文件操作 --- RandomAccessFile



 *    



 *    RandomAccessFile提供了一个可以向文件中写出一组字节的方法:



 *    void write(byte[] bytesArr)



     将给定的字节数组中所有字节一次性写出



 



     与该方法相似的还有一个常用方法:



     void write(byte[] bytesArr,int offset,int len)



     该方法会根据当前指针所在位置处连续写出给定数组中的部分字节,



     这个部分是从数组的offset处开始,连续len个字节。



 



     涉及到的其他类的方法: Sting类的  getBytes



     API:使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。



     我的理解: 根据系统默认字符集的不同,本案例中字符串"我的生活很美好"



     按照,utf-8每个中文3个字节,最终需要21个字节.Gbk每个中文2个字节.最终需要14个字节.



     也就是把14个字节一共在内存中(14*8)位全部写上数字.把这些数字转换成一个byte类型的数组保存.



 */



public class RandomAccessFileDemo3 {

    public static void main(String[] args) throws IOException {
        //创建一个基于文件访问的读写模式的RandomAccessFile我们只需要在第二个参数中传入”rw”即可。
        RandomAccessFile rafDemo = new RandomAccessFile("rafDemo.txt","rw");
        //那么这时在使用RandomAccessFile对该文件的访问就是又可读又可写的。

        String str = "我的生活很美好";    //写入这段字符串
        /* 首先要让计算机把这段字符串翻译成14个 "int型数字" 的 "数组"!
         * 按照系统默认字符集将字符串转换为一组字节(转换成了一组int型"低8位"的数组组成了一组字节)
         * 用String类的getBytes方法把字符串转换成字节.
         */
        byte[] strBytes = str.getBytes();
        /* byte[] strBytes = str.getBytes("UTF-8")
         * 表示以UTF-8的编码进行转换,一个中文三个字节 */

        /*
         * 将给定的字节数组中所有字节一次性写出
         * void write(byte[] bytesArr)
         * void write(byte[] bytesArr,int offset,int len)
         * 以下使用了write的重载方法,即写到第8个字节的位置.
         */
        rafDemo.write(strBytes,0,8);
        //文本文件中的内容:  我的美好

        /*提示语句*/
        System.out.println("写入完毕");

        //读写全部进行完毕后必须关闭释放资源
        rafDemo.close();
    }
}



RandomAccessFileDemo4  从文件中批量读取字节的方法



/**



 *    文件操作 --- RandomAccessFile



 *    



 *    RandomAccessFile提供了一个可以从文件中批量读取字节的方法:



 *  int read(byte[] bytesArr)



     该方法会从文件中尝试最多读取给定数组的总长度的字节量,并从给定的字节数组第一个位置开始,



     将读取到的字节顺序存放至数组中,返回值为实际读取到的字节量 。



 



     与该方法相似的还有一个常用方法:



 



 



     涉及到的其他类的方法: Sting类的  getBytes



public class RandomAccessFileDemo4 {

    public static void main(String[] args) throws IOException {
        //创建一个基于文件访问的读写模式的RandomAccessFile我们只需要在第二个参数中传入”rw”即可。
        RandomAccessFile rafDemo = new RandomAccessFile("rafDemo.txt","r");
        //那么这时在使用RandomAccessFile对该文件的访问就是又可读又可写的。

        byte[] byteArr = new byte[100];
        /*这个byte数组,用来保存rafDemo文件的字节量,每次读取最大保存的长度为100字节*/

        /*
         * int read(byte[] d)
         * 一次性尝试读取给定字节数组(byteArr)总长度的字节量,
         * 并把读取到的字节量存入到这个数组中,返回值为实际读取到得字节量,若返回值为-1,
         * 则说明读取到了文件末尾(或者本次什么都没有读到).
         */
        int len = rafDemo.read(byteArr);
        System.out.println("rafDemo文件占用的字节为: "+len+"字节");
        //rafDemo文件占用的字节为: 8字节 (rafDemo内容为 4个汉字)

        /*提示语句*/
        System.out.println("读取完毕");

        //读写全部进行完毕后必须关闭释放资源
        rafDemo.close();
    }
}