Java IO流

IO概念

IO是input和output的缩写,是对数据的流入和流出的一种抽象 ,java为了我们调用方便,抽象出的用于解决数据流动的类体系

流具有方向性,至于是输入流还是输出流则是一个相对的概念,一般以程序为参考,如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。

File类

File类在java.Io包中

File类可以表示文件,也可以表示目录,在程序中一个File类对象可以代 表一个文件或目录

File对象无法操作文件的具体数据,即不能直接对文件进行读/写操作。

file类的常用方法:

public static void main(String[] args) {
        File file1 = new File("D:/课件/java");//绝对路径
        System.out.println(file1.canExecute());//是否可执行
        System.out.println(file1.canRead());//是否可读
        System.out.println(file1.canWrite());//是否可写
        System.out.println(file1.exists());//判断文件是否存在
        System.out.println(file1.isFile());//判断是否为文件
        System.out.println(file1.isAbsolute());//是否绝对路径
        System.out.println(file1.isDirectory());//判断是否为目录
        System.out.println(file1.getName());//获取文件名
        try {
            file1.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        File[] fs = file1.listFiles();
        for (File f : fs) {
            if (f.isDirectory()) {//判断是否为目录
                File[] fs2 = f.listFiles();//将目录下的子目录及文件的实例返回到File数组中
                Arrays.stream(fs2).forEach((e) -> {
                    System.out.println(e);
                });
            }
            System.out.println(f);
        }
}

从数据流编码格式上可以分为:

1.字节流:InputStream和OutputStream(可以读写二进制文件,主要处理音频、图片、歌曲、字节流,处理单元为1个字节)

2.字符流:Reader和Writer(主要处理字符或字符串,字符流处理单元为1个字符)

按数据的传输方向可以分为:

1.输入流 2.输出流

字节流中常用类:FileInputStream,FileOutputStream

public static void main(String[] args) {
        FileInputStream in = null;
        FileOutputStream out = null;
        int i = 0;
        try {
            in = new FileInputStream("D:/text.txt");
            out = new FileOutputStream("D:/text1.txt");
            i = 0;
            while ((i = in.read()) != -1) {//读取文件
                out.write(i);
            }
        } catch (FileNotFoundException e) {
            System.out.println("找不到文件");
        } catch (IOException e) {
            System.out.println("无法读写文件");
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

字符流中常用类:FileReader,FileWriter

public static void main(String[] args) throws IOException {
        FileReader fileReader = new FileReader("D:/demo.txt");
        FileWriter fileWriter = new FileWriter("D:/demo1.txt", true);
        char[] chars = new char[5];
        int size = 0;
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
        String s = null;
        while ((s = bufferedReader.readLine()) != null) {
            bufferedWriter.write(s);
            bufferedWriter.newLine();
        }
        bufferedReader.close();
        bufferedWriter.close();

    }

print(打印流):只做输出没有输入打印流分为字节打印流和字符打印流

PrintWriter(字符打印流):print方法可以打印各种类型数据

对象输入输出流:ObjectOutputStream,ObjectInputStream;用于写入对象信息,读取对象信息一旦将对象信息写入到文件中,就可以做到持久化了

readObject()方法可以直接读取一个对象;writeObject()方法可以直接将对象保存到输出流中

对象序列化:

序列化: 将数据结构或对象转换成二进制字节流的过程,必须要实现 Serializable接口

反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程

Serializable接口中没有任何方法。当一个类声明实现Serializable接口后, 表明该类可被序列化

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值