java中IO流简述

javaIO流介绍

一,javaIO流的作用

用于处理设备上的数据,如读取数据和写入数据

二,流的分类方式

1.1、按流向分类:

       输入流: 读取数据的流,只能进行读操作。
       输出流: 写入数据的流,只能进行写操作。

1.2、按数据传输单位分类:

字节流:以字节(8位二进制)为单位进行处理。以处理所有类型数据,主要用于读写诸如图像或声音的二进制数据。

字符流:以字符(16位二进制)为单位进行处理。只能用来处理文字等字符。

结论:只要是处理纯文本数据,就要优先考虑使用字符流。除此之外都用字节流。

1.3、按功能分类:

节点流:从特定的地方读写的流类,如磁盘或者一块内存区域。

过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或者输出流连接创建的。

 

三、IO流的四大抽象类:

             不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。这四大抽象类是所有IO流的父类,一般子类名后缀绝大部分是父类名称,而前缀都是体现子类功能的名字,这样方便记忆和查找子类。

这个四个类的关系如下:

 

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

 

 

 

IO流的四大抽象类及其子类。请看以下表格:

分类

字节输入流

字节输出流

字符输入流

字符输出流

抽象基类

InputStream

OutputStream

Reader

Writer

访问文件

FileInputStream

FileOutputStream

FileReader

FileWriter

访问数组

ByteArrayInputStream

ByteArrayOutputStream

CharArrayReader

CharArrayWriter

访问管道

PipedInputStream

PipedOutputStream

PipedReader

PipedWriter

访问字符串

 

 

StringReader

StringWriter

缓冲流

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

转换流

 

 

InputStreamReader

OutputStreamWriter

对象流

ObjectInputStream

ObjectOutputStream

 

 

抽象基类

FilterInputStream

FilterOutputStream

FilterReader

FileWriter

打印流

 

PrintStream

 

 

推回输入流

PushbackInputStream

 

PushbackReader

 

特殊流

DataInputStream

DataOutputStream

 

 

 

 

四、读写字符文件的主要是用到FileReader和FileWriter,他们分 别是继承了,Reader和Writer,下面就写一个读取文件以及写入 数据到一个文件的例子。

 

import java.io.*;

public class FileOperate{

 

public static void main(String[] args){

try{

//读取read文件中的数据到FileReader流

FileReader fr = new FileReader("F:read.txt");

//把文件写入到FileWriter流

FileWriter fw = new FileWriter("F:writer.txt");

//创建存储字节数据的数组

char[] c = new char[1024];

int i = 0;

while((i=fr.read(c))!=-1){

fw.write(c,0,i);

             }

//将写入缓冲区的流刷出到文件中,当然关闭流时也会先刷出

fw.flush();

fw.close();

fr.close();

}catch(IOException e){

e.printStackTrace();

}

}

 

}

 

 

五、使用缓冲流加快数据的传输,可以提高读写效率。以上面的例子 说,字符 流缓冲流是BufferedReader和BufferedWriter

 

import java.io.*;

public class FileOperate{

 

public static void main(String[] args){

try{

//读取read文件中的数据到FileReader流

FileReader fr = new FileReader("F:read.txt");

//创建读取缓冲流BufferedReader

BufferedReader br = new BufferedReader(fr);

 

 

//把文件写入到FileWriter流

FileWriter fw = new FileWriter("F:writer.txt");

//创建写入缓冲流

BufferedWriter bw = new BufferedWriter(fw);

String line = null;

 

//在下面我们使用字符流缓冲流一次读取一行的方法readLine();

while((line=br.readLine())!=null){

bw.write(line);

//BufferedWriter 的换行方法newLine();

bw.newLine();

}

//将写入缓冲区的流刷出到文件中,当然关闭流时也会先刷出

fw.flush();

br.close();

bw.close();

}catch(IOException e)

{

e.printStackTrace();

}

}

 

}

 六、读写图片文件的主要是用到FileInputStream和FileOutputStream,他们分 别是继承了,InputStream和OutputStream,下面利用字节流复制图片的例子。

import java.io.*;
public class copy{


    public static void main(String[] args){
    
        
        try{
            FileInputStream fi = new FileInputStream("F://图片.jpg");
    
            FileOutputStream fo = new FileOutputStream("F://copy.jpg");
            
            byte[] b = new byte[1024];
            
            int i = 0;
            while((i = fi.read(b))!=-1){
                fo.write(b,0,i);
            }
            
            fi.close();
            fo.close();
        }catch(IOException e){
            e.printStackTrace();
        }
    
    
    }

}


七、字节流缓冲流和字符流缓冲流使用方法差不多此处不再叙述。

八、字节流和字符流的相互转换

 

1、InputSreamReader用于将一个字节流中的字节解码成字符,OutputStream用于将写入的字符编码成字节后写入一个字节流

例:

Import java.io.*;

public class Convert{

public static void main(String[] args){

BufferedReader buf  =  null;

String str = null;

While(true){

System.out.println(“请输入:”)

try{

buf = new BufferedReader(new InputStreamRead(System.in));

 

str = buf.readLine();

System.out.println(str);

 

 

}catch(IOException e){

e.printStacktrace();

}

 

}

 

}

 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值