Java基础之I/O流数据访问

时间:2023-02-17 16:55:24

文件操作

File  file  =  new File(“file name”)  

File 代表了磁盘中的一个文件或者文件夹  不能对文件进行读写

常用方法 :exists() isFile() isDirectory() getName() lastModified()

流的三种分类

流的方向  :  输入流  输出流

数据单位  :  字节流  字符流 (只有文本以字符为单位)

流的功能  :  节点流  过滤流

I/O流数据访问

 

字节流(类结尾一般为OutputStream InputStream)

例如:ab中 (读取4次)

  FileOutputStream   (写  write()  )

  FileInputStream    (读取  read())

  BufferedOutputStream

  BufferedInputStream

中间桥梁(字节流Stream->字符流的过渡)

  OutputStreamWriter

  InputStreamReader

字符流(Reader  Writer)

例如:ab中123

  FileWriter

  FileReader

  BufferedReader

  BufferedWriter

1.I/O流与文件操作

从传输数据的角度,I/O流又可分为字节流和字符流

Java基础之I/O流数据访问

InputStream和OutputStream是字节流的基类,Reader和Writer是字符流的基类。

I/O流在文件读写、网络通讯、内存数据交换等方面被广泛应用。

包装流:

通常很少使用单个流对象,而是

节流

字节流的父类 为 InputStream / OutputStream

主要的字节流 -->节点流 :  FileInputStream / FileOutputStream  

主要的字节流 --> 过滤流 :  DataInputStream / DataOutputStream  

   --> 过滤流 :  BufferedInputStream

   --> 过滤流 :  ObjectInputStream / ObjectOutputStream  

对象流能处理 8种基本类型  自带缓冲 处理实现序列化的对象

Serializable  对象序列化 一个类实现Serializable 接口

transient     修饰属性不参与序列化

RandomAccessFile   随机访问文件流    seek(long  pos) 文件指针

处理缓冲输出字节流 的另一个类   PrintStream

PrintStream  :  可以作为节点流使用 也可以作为过滤流使用

字符流

编码解码不同的时候就会产生乱码 GBK GB2312  Big5  UTF-8  ASCII

字符流的父类 为  Reader / Writer

桥转换  :   字节流-->字符流    指定编解码方式

主要的字符流  --> 节点流  : FileReader  /  FileWriter

  -->桥转换  : InputStreamReader / OutputStreamWriter

  --> 过滤流  : BufferedReader / BufferedWriter  

处理缓冲输出字符流 的另一个类   PrintWriter (过滤流)

PrintWriter : 可以作为节点流使用 可以作为桥转换使用可以作为过滤流使用

关闭流

流的关闭属于释放资源 , 所以 我们尽量可以把关闭流的语句写在finally语句块中 ! 同时在关闭流的同时我们一定要注意对象是否指向 null  尽最大程度上来避免空指针异常 在关闭流的动作完成后 将流对象指向null  释放内存 ,以便java垃圾回收机制进行垃圾回收

关闭流 关闭最外层的流对象就可以了 例如 关闭 过滤流 创建的对象

规范写法  例如关闭Connection   conn  

Finally { if(conn!=null){try{conn.close();conn=null}

catch(Exceptione){e.printStackTrace();}}}