黑马程序员--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() 释放资源
         
         
         
         

0 0
原创粉丝点击