分享

Java 输入输出流 汇总

 橙zc 2014-08-12

IO流的三种分类方式

1.按流的方向分为:输入流和输出流

 

2.按流的数据单位不同分为:字节流和字符流

 

3.按流的功能不同分为:节点流和处理流

 

节点流表示的是直接操作节点(例如文件,键盘)的流,例如FileInputStream.
处理流(过滤流)表示的是对节点流进行了操作(加工)的类,例如InputStreamReader

IO流的四大抽象类

字符流:Reader(读) Writer(写)

 

字节流:InputStream(读数据)  OutputStream(写数据)

 

Java <wbr>输入输出流 <wbr>汇总

                                IO
流对象继承关系

Java <wbr>输入输出流 <wbr>汇总

                       其它常用与流有关的对象

Java <wbr>输入输出流 <wbr>汇总

                            节点流类型

 

IO体系,所具备的基本功能就有两个:读和写

1,字节流

InputStream(),OutputStream()

2,字符流

Reader(),Writer()

 

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

 

InputStream的基本方法

int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾

void close() throws IOException 关闭流释放内存资源

long skip(long n) throws IOException 跳过n个字节不读

 

OutputStream的基本方法

void write(int b) throws IOException 向输出流写入一个字节数据

void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

 

Reader的基本方法

int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾

 

Writer的基本方法

void write(int c) throws IOException 向输出流写入一个字符数据

void write(String str) throws IOException将一个字符串中的字符写入到输出流

void write(String strint offsetint length)

将一个字符串从offset开始的length个字符写入到输出流

void flush() throws IOException

将输出流中缓冲的数据全部写出到目的地

缓冲流:缓冲流要套接在相应的节点流之上,提高了读写的效率。

此处理流的构造方法都得传相对应的基类类型

BufferedReader:提供了readLine方法用于高校读取一行字符串

BufferedWriter:提供了newLine用于写入一个行分隔符也就是换行

BufferedInputStream 没多大用处

BufferedOutputStream 没多大用处

转换流:主要作用将字节流转换成字符流。用处较大!

转换流在构造时可以指定其编码集合

InputStreamReader需要和InputStream套接

OutputStreamWriter需要和OutputStream套接

例:OutputStreamWriter osw = new OutputStreamWriter new FileOutputStream(文件路径);

方法例:osw.getEncoding(); 获得流的编码方式

 

数据流与字节数组流

数据流主要为实现可以存取Java原始数据类型如longboolean

数据流是字节流

DataInputStream需要和InputStream套接

DataOutputStream需要和OutputStream套接

DataInputStream方法:readBoolean() readInt()

readUTF():网络传输常用方法 读一个Unicode字符串

DataOutputStream方法与DataInputStream基本对应为写的方法

//此构造函数等于已可以往一个字节数组里输入内容

ByteArrayOutputStream baos = new ByteArrayOutputStream ();

 

//此方法为获取一个字节数组方法返回字节数组

baos.toByteArray();

 

//此方法获取字节数组占了多少字节

new ByteArrayInputStream(一个字节数组)。available()

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

try

{

       dos.writeDouble(Math.random());

       dos.writeBoolean(true);

       ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());

      System.out.println(bais.available());

      DataInputStream dis = new DataInputStream(bais);

      System.out.println(dis.readDouble());

      System.out.println(dis.readBoolean());

      dos.close();

dis.close();

 }

 catch (IOException e)

 {

      e.printStackTrace();

 }

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多