IO流

发布于 2022-05-03  82 次阅读


文件

文件就是保存数据的地方

文件流

文件在程序中是以流的形式来操作的

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从数据源(文件)到程序(内存)的路径

输出流:数据从程序(内存)到数据源(文件)的路径

创建文件对象相关构造器和方法

相关方法

new File(String pathname)//根据路径构建一个File对象

new File(File parent,String child)//根据父目录文件+子路径构建

new File(String parent,String child)//根据父目录+子路径构建

createNewFile 创建新文件

例子

    public static void main(String[] args) throws IOException {
//        File miao = new File("d:\\", "miao");
        
//        File file = new File("d:/ios.txt");
        
        File file = new File("d:\\");
        File qwq = new File(file, "qwq");
        if (qwq.createNewFile()) {
System.out.println("创建ok");
        }else{
            System.out.println("创建失败");
        }
    }

方法

文件名字:get.getName()

文件绝对路径:getAbsolutepath()

文件父级目录:getparent()

文件大小(字节):length()

文件是否存在:exists()

是不是一个文件:isFile()

是不是一个目录:isDirectory()

创建一级目录:mkdir()

创建多级目录:mkdirs()

删除空目录或文件:delete()

lo流原理及流的分类

java lo流原理

1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等

2.java程序中,对于数据的输入/输出操作以“流(srteam)”的方式进行。

3.java.io包下提供了各种“流”类和接口,用于获取不同种类的数据,并通过方法输入或输出数据

4.输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中

5.输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中

流的分类

按操作数据单位不同分为:字节流(8 bit),字符流(按字符)

按数据流的流向不同分为:输入流,输出流

按流的角色的不同分为:节点流,处理流/包装流

抽象基类字节流字符流
输入流InputStreamReader
输出流OutputStreamWriter

1.java的IO流共涉及40多个类,实际上非常规则,都是从如上4个抽象基类派生的

2.由这四个类派生出来的子类名称都是以其父名作为子类名后缀

节点流和处理流的区别和联系

1.节点流是底层流/低级流,直接跟数据源相接

2.处理流包装节点流,即可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出

3.处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连

处理流的功能主要体现现在以下两个方面

1.性能的提高:主要以增加缓冲的方式来提高输入输出的效率

2.操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便

节点流和处理流

注意事项和细节

1.读写顺序要一样

2.要求实现序列化或反序列化对象,需要实现Serializable

3.序列化的类中建议添加SerialVersionUID,为了提高版本的兼容性

4.序列化对象时,默认将里面所有属性都进行序列化,但除了staitic或transient修饰的成员

5.序列化对象时,要求里面属性的类型也需要实现序列化接口

6.序列化具备可继承性,也就是如果某类已经实现了序列化,则它的所有子类也已经默认实现了序列化

标准输入输出流

System.in标准输入 类型:inputStream 默认设备:键盘

System.out 标准输出 类型:printStream 默认设备:显示器

转换流

InputStreamReader和OutputStreamWriter

介绍

1.InputStreamReader:Reader的子类,可以将InputStream(字节流)包装成Reader(字符流)

2.OutputStreamWriter的子类,实现将OutputStream(字节流)包装成Writer(字符流)

3.当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流装换成字符流

4.可以在使用时指定编码格式(比如 utf-8,gbk,gb2312,ISO8859-1等)

打印流(只有输出流,没有输入流)

PrintStream和PrintWriter

Properties类

1.专门用于读写配置文件的集合类

配置文件的格式:

键 = 值

键 = 值

2.注意:键值对不需要有空格,值不需要用引号括起来,默认类型是String

3.Properties的常见方法

1.load:加载配置文件的键值对到Properties对象

2.list:将数据显示到指定设备

3.getProperty(key):根据键获取值

4.setProperty(key,value):设置键值对到Properties对象

5.store:将Properties中的键值对存储到配置文件,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码