黑马程序员--java基础--IO流概述
2015-08-03 19:49
549 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1. 什么是IO技术
输入输出技术 I是Input的缩写,O是Output的缩写
将数据从一个设备存储到另一个设备
数据就像水,从管道一端,流向另一端,IO流技术
IO可以实现互联网的文件上传和下载
2. JAVA中的IO
因为java是面向对象的语言,所以IO技术也被封装成对象:IO流对象
所有用于操作流的对象的类,都放在java.io包中
对应数据不同,文件不同,流对象出现了
从程序中将数据存储到文件中,就是输出流过程,也叫做写文件
从文件中将数据放到程序中,就是输入流过程,也叫做读取文件
输入和输出是相对的概念,对于虚拟机来说.从文件中读取数据叫做输入,而对于文件来说,这是它的一个输出过程.
3. IO流对象分类
按照操作的文件类型分
字节流
操作文件的时候,每次都是操作单1字节,无论读取还是写入针对1个字节,8个二进制位
因为计算机中所有的文件都是由字节组成,所以字节流操作可以实现操作所有类型的文件
字符流
非常特殊的文件,文本文件,人类可以直接识别.
出现字符流的目的,就是为了方便操作文本文件
每次无论读取和写入,操作的1个字符,2个字节,16个二进制,去查询本机默认编码表
专门处理文本文件,其他文件不能处理
常见文本文件: 记事本txt java html
按照数据操作方向分类(流向分类)
输出流 Output
从JAVA程序中,写数据出去,用于写文件
输入流 Input
从外部设备,读取数据到JAVA程序中,用于读取文件
总体来说:
字节输出流 - 写任意文件
字节输入流 - 读取任意文件
字符输出流 - 专门写文本文件
字符输入流 - 专门读取文本文件
4. IO流对象中的四大抽象基类
4个类都是抽象类,表示这个派系最顶层的父类
字节输出流抽象基类 -- 写的方法
java.io.OutputStream
写的方法 write
write(int a) 写单个字节
write(byte[] bytes) 写字节数组
write(byte[] bytes,int offset,int length) 写字节数组一部分,开始索引,写几个
close() 释放资源 IO对象读取和写文件依赖操作系统实现
字节输入流抽象基类 -- 读取的方法
java.io.InputStream
读取的方法 read
int read() 读取单个字节
int read(byte[] bytes) 读取字节,存储到数组中
int read(byte[] bytes,int offset,int length) 读取字节,存储数组的一部分中
close() 释放资源
小例子:通过输入输出字节流,实现文件的复制
java.io.Writer
写的方法 write
write(int a) 写单个字符
write(char[] ch) 写字符数组
write(char[] ch,int offset,int length)写字符数组一部分,开始索引,写几个
write(String str) 写字符串
write(String str,int offset,int length)写字符串一部分,开始索引,写几个
flush() 刷新流的缓冲区
close() 释放资源
字符输入流抽象基类 -- 读取的方法,读取文本文件
java.io.Reader
读取的方法 read
int read() 读取单个字符
int read(char[] ch) 读取字符,存储到数组中
int read(char[] ch,int offset,int length) 读取字符,存储到数组中的一部分
close() 释放资源
1. 什么是IO技术
输入输出技术 I是Input的缩写,O是Output的缩写
将数据从一个设备存储到另一个设备
数据就像水,从管道一端,流向另一端,IO流技术
IO可以实现互联网的文件上传和下载
2. JAVA中的IO
因为java是面向对象的语言,所以IO技术也被封装成对象:IO流对象
所有用于操作流的对象的类,都放在java.io包中
对应数据不同,文件不同,流对象出现了
从程序中将数据存储到文件中,就是输出流过程,也叫做写文件
从文件中将数据放到程序中,就是输入流过程,也叫做读取文件
输入和输出是相对的概念,对于虚拟机来说.从文件中读取数据叫做输入,而对于文件来说,这是它的一个输出过程.
3. IO流对象分类
按照操作的文件类型分
字节流
操作文件的时候,每次都是操作单1字节,无论读取还是写入针对1个字节,8个二进制位
因为计算机中所有的文件都是由字节组成,所以字节流操作可以实现操作所有类型的文件
字符流
非常特殊的文件,文本文件,人类可以直接识别.
出现字符流的目的,就是为了方便操作文本文件
每次无论读取和写入,操作的1个字符,2个字节,16个二进制,去查询本机默认编码表
专门处理文本文件,其他文件不能处理
常见文本文件: 记事本txt java html
按照数据操作方向分类(流向分类)
输出流 Output
从JAVA程序中,写数据出去,用于写文件
输入流 Input
从外部设备,读取数据到JAVA程序中,用于读取文件
总体来说:
字节输出流 - 写任意文件
字节输入流 - 读取任意文件
字符输出流 - 专门写文本文件
字符输入流 - 专门读取文本文件
4. IO流对象中的四大抽象基类
4个类都是抽象类,表示这个派系最顶层的父类
字节输出流抽象基类 -- 写的方法
java.io.OutputStream
写的方法 write
write(int a) 写单个字节
write(byte[] bytes) 写字节数组
write(byte[] bytes,int offset,int length) 写字节数组一部分,开始索引,写几个
close() 释放资源 IO对象读取和写文件依赖操作系统实现
字节输入流抽象基类 -- 读取的方法
java.io.InputStream
读取的方法 read
int read() 读取单个字节
int read(byte[] bytes) 读取字节,存储到数组中
int read(byte[] bytes,int offset,int length) 读取字节,存储数组的一部分中
close() 释放资源
小例子:通过输入输出字节流,实现文件的复制
/* *综合: 文件复制 FileInputStream读取一个文件 FileOutputStream写一个文件 思路: 既然是复制,那就有两个file路径对象 其中一个做输入,另一个做输出 */ import java.io.*; public class Exercise { public static void main(String[] args){ FileInputStream fis=null; FileOutputStream fos=null; try{ //创建读数据文件 fis=new FileInputStream("f:\\abc.txt"); //创建写数据文件 fos =new FileOutputStream("f:\\omg.txt"); //从fis中读取数据 byte[] bytes =new byte[1024]; //循环读取文件中的数据,并把读到的数据存放到字节数组中 while(fis.read(bytes)!=-1){ //从字节数组中取出数据,写入到另外的一个文件中 fos.write(bytes); } }catch(IOException ie){ ie.printStackTrace(); }finally{ try{ fis.close(); fos.close(); }catch(Exception e){ throw new RuntimeException("释放资源失败"); } } } }字符输出流抽象基类 -- 写的方法,写文本文件
java.io.Writer
写的方法 write
write(int a) 写单个字符
write(char[] ch) 写字符数组
write(char[] ch,int offset,int length)写字符数组一部分,开始索引,写几个
write(String str) 写字符串
write(String str,int offset,int length)写字符串一部分,开始索引,写几个
flush() 刷新流的缓冲区
close() 释放资源
字符输入流抽象基类 -- 读取的方法,读取文本文件
java.io.Reader
读取的方法 read
int read() 读取单个字符
int read(char[] ch) 读取字符,存储到数组中
int read(char[] ch,int offset,int length) 读取字符,存储到数组中的一部分
close() 释放资源
相关文章推荐
- 黑马程序员--java基础--多线程
- 剑指Offer面试题21(Java版):包含min函数的栈
- 程序员的出路之一
- Java面试宝典:42个面试题总结!
- 程序员学炒股(2) 个股和大盘的关系
- 面试题总结9
- 剑指offer_面试题10_二进制中1的个数(位运算)
- [.Net码农]FileUpload.PostedFile 属性
- 《程序员面试宝典》--约瑟夫环
- 黑马程序员——16,集合
- 黑马程序员-反射
- 程序员的发展瓶颈与压力
- java面试总结
- 《招聘一个靠谱的iOS》面试题参考答案(上)
- 程序员学炒股(1) 基础数据准备
- 面试十大常见Java String问题
- 黑马程序员——Java基础---集合2
- 黑马程序员——Java基础---集合1
- 脚本面试题
- 一道IOS面试题