黑马程序员--java基础--IO流概述
来源:互联网 发布:淘宝开店简介怎么写 编辑:程序博客网 时间:2024/05/22 00:20
-----------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() 释放资源
小例子:通过输入输出字节流,实现文件的复制
/* *综合: 文件复制 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基础--IO流概述
- 黑马程序员:Java基础总结----IO(Input Output)流概述
- 黑马程序员 Java基础之IO流<二>IO流概述及InputStream字节流
- 黑马程序员——Java基础——IO流笔记(IO流概述)
- 黑马程序员——Java基础——IO流笔记(IO流概述)
- 黑马程序员——Java基础---IO概述
- 黑马程序员——java基础IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础---IO流概述、字符流、字节流、流操作规律
- 黑马程序员--IO流概述
- 黑马程序员——Java基础----IO(概述、字符流、字节流等)(1)
- 黑马程序员-java基础 io字符流
- 黑马程序员-java基础 io字节流
- 黑马程序员--JAVA基础之IO流
- 黑马程序员JAVA基础-IO流
- 黑马程序员 Java基础 ---> IO流
- 黑马程序员 JAVA基础<五> IO流
- 黑马程序员-JAVA基础-IO流
- 黑马程序员 java基础回顾---IO流
- HDU 1394 Minimum Inversion Number 最小逆序数 线段树
- 黑马程序员--java基础--多线程
- selection does not contain a main type
- Oil Deposits HDU杭电1241
- 正则表达式 - 自动生成器
- 黑马程序员--java基础--IO流概述
- Android 跳转基础应用(联系人,日历)
- C语言笔记
- 黑马程序员--java基础--反射
- ZOJ 3886 Nico Number(素数筛选 + 线段树)
- HDU 2063.过山车【二分图、二分匹配初接触】【8月3】
- 剑指Offer面试题22(Java版):栈的压入、弹出序列
- 【HDOJ 1532】 Drainage Ditches(最大流模板)
- Yii2的安装及简单配置