您的位置:首页 > 职场人生

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

 

小例子:通过输入输出字节流,实现文件的复制

/*
*综合: 文件复制
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() 释放资源

         

         

         

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: