前端-IO

IO

流的概念

内存与存储设备之间传输数据的通道。

流的分类

按方向【重点】:

  • 输入流:将<存储设备>中的内容读入到<内存>中。

  • 输出流:将<内存>中的内容写入到<存储设备>中。

按单位:

  • 字节流:以字节为单位,可以读写所有数据。

  • 字符流:以字符为单位,只能读写文本数据。

按功能:

  • 节点流:具有实际传输数据的读写功能。

  • 过滤流:在节点流的基础之上增强功能。

字节流

字节流的父类(抽象类):

  • InputStream:字节输入流

    • public int read(){}

    • public int read(byte[] b){}

    • public int read(byte[] b,int off,int len){}

  • OutputStream:字节输出流

    • public int write(int n){}

    • public int write(byte[] b){}

    • public int write(byte[] b,int off,int len){}

文件字节流

FileInputStream:

  • public int read(byte[] b){}//从流中读取多个字节,将读到内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1.

FileOutputStream:

  • public int write(byte[] b){}//一次写多个字节,将b数组中所有字节,写入输入流。

字节缓冲流

缓冲流:BufferedInputStream/BufferedOutputStream

  • 提高IO效率,减少访问磁盘的次数

  • 数据存储在缓冲区中,flush是将缓存区的内容写入文件中,也可以直接close

对象流

对象流:ObjectOutputStream/ObjectInputStream

  • 增强了缓冲区功能

  • 增强了读写8种基本数据类型和字符串功能

  • 增强了读写对象的功能:

    • readObject() 从流中读取一个对象

    • writeObject(Object obj) 向流中写入一个对象

使用流传输对象的过程称为序列化,反序列化。

编码方式

字符编码

ISO-8859-1 收录除ASCII外,还包括西欧,希腊语,泰语,阿拉伯语,希伯来语对应的文件符号。

UTF-8 针对Unicode码表的可变长度字符编码

GB2312 简体中文

GBK 简体中文,扩充

BIG5 台湾,繁体中文

当编码方式和解码方式不一致时,会出现乱码。

字符流

字符流的父类(抽象类):

  • Reader:字符输入流

    • public int read(){}

    • public int read(char[] c){}

    • public int read(char[] b,int odd,int len){}

  • Writer:字符输出流

    • public int write(int n){}

    • public int write(String str){}

    • public int write(char[] c){}

文件字符流

FileReader:

  • public int read(char[] c){}//从流中读取多个字符,将读到内容存入c数组,返回实际读到的字符数;如果达到文件的尾部,则返回-1.

FileWriter:

  • public int write(String str){}//一次写多个字符,将b数组中所有字符,写入输出流

字符缓冲流

缓冲流:BufferedReader/BufferedWriter

  • 高效读写

  • 支持输入换行符

  • 可以一次写一行,读一行

打印流

PrintWriter:

  • 封装了print()/println()方法,支持写入后换行

  • 支持数据原样打印

转换流

桥转换流:InputStreamReader/OutputStreamWriter

  • 可将字节流转换为字符流。

  • 可设置字符的编码方式。

File类

概念:代表物理磁盘符中的一个文件或者文件夹。

方法:

  • createNewFile() //创建一个新文件

  • mkdir() //创建一个新目录

  • delete() //删除文件或空目录

  • exists() //判断File对象所代表的对象是否存在

  • getAbsolutePath() //获取文件的绝对路径

  • getName() //取得名字

  • getParent() //获取文件/目录所在的目录

  • isDirectory() //是否是目录

  • isFile() //是否是文件

  • length() //获得文件的长度

  • listFiles() //列出目录中的所有内容

  • renameTo() //修改文件名为

FileFilter接口

public interface FileFilter

  • boolean accept(File pathname)

  • 当调用File类中大的listFiles()方法时,支持传入FileFilter接口实现类,对获取文件进行过滤,只有满足条件的文件才可以出现在listFlies()的返回值中。

Properties

Properties:属性集合

特点:

  1. 存储属性名和属性值

  2. 属性名和属性值都是字符串类型

  3. 没有泛型

  4. 和流有关

posted @ 2021-07-19 13:18  y4396  阅读(185)  评论(0)    收藏  举报