javase:IO流

IO流引入

1.图灵模型

2.IO流概述
以应用程序为参照物,读取数据为输入流(input),写数据为输出流OutPut,大量输入输出数据简称IO流
IO流原理

IO流分类

1.读写的文件分类
①二进制文件:打开之后是乱码,或者是16进制无法生成文字的文件。例如:视频,音频,图片,exe,dll文件等
尔文本文件:打开文件内容可直接阅读。例如:记事本,java程序,网页文件
2.IO流读取数据内容分类
①字符流:读取的内容最小单位是char类型
②字节流:读取内容的最小单位是byte类型

IO流的访问方式分类

1.随机读写文件:文件中存在一个游标,通过移动游标的方式,改变读写数据的位置

2.顺序读写:每次都从文件开始的位置开始读写

RandomAccessFile类原理

原理:RandomAccessFile类包含了一个记录指针,用以标识当前读写处的位置,当程序创建一个RandomAccessFile时,该对象的文件记录位于文件头(也就是0处),当读/写了n个字节后,文件记录指针将会向后移动n个字节。除此之外,RandomAccessFile可以自由的移动记录指针,即可以向前移动,也可以向后移动。RandomAccessFile包含了以下两个方法来操作文件的记录指针。

RandomAccessFile类API

package RandomAccessFileDemo;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileAPI {

    public static void main(String[] args) throws IOException {

        //1.创建一个对象
        RandomAccessFile raf = new RandomAccessFile("C:\\Users\\Gypsophila\\Desktop\\test2.txt","r");

        //2.在创建一个对象
        RandomAccessFile raf1 = new RandomAccessFile("C:\\Users\\Gypsophila\\Desktop\\test.txt","rw");

        //3.读取文件内容
        //a)可以移动游标(指针)
        raf.seek(20);
        while(true){
            //b)读数据
            int data = raf.read();
            //获取文件指针
            System.out.println("源文件指针位置:"+raf.getFilePointer());
            //c)跳出条件  当data的数值为-1时,代表到了文件末尾
            if(data == -1){
                break;
            }
            //d)将数据写出
            raf1.write(data);
            //获取文件指针
            System.out.println("目标文件指针位置:"+raf1.getFilePointer());
        }

        //e)获取对应文件的大小
        System.out.println("raf:"+raf.length());//raf:26
        System.out.println("raf1:"+raf1.length());//raf1:6


        //f)将管道关闭
        raf.close();
        raf1.close();

        //补充1.定义一个数组 每次写data个字符
        /*byte[] data = new byte[1024];//1kb=1024b
        raf.seek(5);
        while(true){
            //b)读数据
            int len = raf.read(data);
            //c)跳出条件  当data的数值为-1时,代表到了文件末尾
            if(len == -1){
                break;
            }
            //d)将数据写出
            raf1.write(data,0,len);
        }*/
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值