文件操作
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流又可分为字节流和字符流
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();}}}