Java中的输入输出总结

Java中的输入输出总结

标签(空格分隔): java


参考:Java在线中文文档
[TOC]

IO这块的类,接口什么的实在是太多了,一直没有好好的理清过,下面花点时间来深入的掌握一下。原理还要慢慢地梳理。

输入输出体系介绍

什么是输入输出处理(IO)

包括对控制台,内存,文件,图形图像,网络和数据库的读写等。在Java语言中,java.io包就提供了
很多完成输入输出处理功能。

什么是流?

流是一种有序的字节源或目的,当程序需要读取数据时就要打开一个通向数据源的流;而当程序需要
写入数据的时候就会打开一个通向目的地的流,数据就好像在管道中流动一样。
流的分类
将流按三种方式分类:输入流和输出流,字节流和字符流,以及从一个特定地方读写的结点流和连接已经存在的流的过滤流。这种分类方式是相互重叠的

  • 输入流和输出流
  • 字节流和字符流
  • 从一个特定地方读写的结点流和连接已经存在的流的过滤流

基本流的介绍

基本流一般是指

  • InputStream
  • OutputStream
  • Reader
  • Writer

这四个抽象类表示的流,其他流均是他们派生出来的子类。其中InputStreamOutputStream是处理8位的字节流数据,ReaderWriter是处理16位的字符流数据。注意的是,字节流和字符流可以相互之间进行转换,使用的就是转换器InputStreamReaderOutputStreamWriterInputStreamReader将字节流InputStream转换为Reader的字符流。同理OutputStreamWriterOutputStream字节流转换为Writer的字符流。

  • 过滤流FilterInputStreamFileterOutputStream继承基本流,并实现了过滤接口DataInputDataOutput
  • 对象流ObjectInputStreamObjectOutputStream也继承基本流,并实现了对象接口ObjectInputObjectOutput
  • 随机文件RandomAccessFile也实现了过滤接口,目的就是为了简化读写手续,统一数据读写方法。

    文件流完成对磁盘文件的读写,而文件类File主要是管理文件或者文件夹的属性

字节输入输出系列(字节IO)

字节输入输出,以InputStream为代表的输入和以OutputStream为代表的输出,它们和自己的子类一起构成了字节输入输出体系。

字节输入输出

InputStream

这个类是一个抽象类,为所有字节输入类的父类,其方法都是通过子类对象来调用的,主要方法有
QQ图片20161129141742.png-12.5kB

OutputStream

这个类是抽象类,是所有字节输出类的父类,其方法都是通过子类对象来调用
QQ图片20161129142152.png-8.2kB

字节标准输入输出

字节标准输入流

System.in就是字节标准输入流的对象。主要接收控制台的输入,并提供read()方法读取数据。可以使用InputStream类的所有方法。这个对象有两种使用方式

  1. 使用Scanner扫描输入流对象,实现从控制台输入
 Scanner in = new Scanner(System.in);
  1. 使用InputStreamReader将System.in转换成字符流,再进行下一步操作。或者再用BufferedReader包装一下。
 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
字节标准输出流

System.out就是标准输出流PrintStream的一个对象,主要完成数据的格式化输出和在控制台中输出各种数据类型结果。PrintStream是OutputStream的子类,因此System.out可以使用OutputStream的所有方法。自身的format()和printf()方法很有趣。,。,。
(没有想到一直使用这个东西,居然原理在今天被发现了,System.out是一个PrintStream对象,println()是该对象调用的一个方法,。,。,。

字节文件输入输出

FileInputStream

该类是InputStream的子类,用于完成读取文件的字节值功能,还可以读取如图像数据之类的原始数据流。
常用的构造方法:

  • FileInputStream(File file):通过已经存在的File类对象进行构造
  • FileInputStream(String filename):直接使用文件名进行构造
FileOutputStream

该类是OutputStream的子类,用于将数据写入字节文件输出流,也可写入图像数据之类道德原始字节流。
常用的构造方法:
- FileOutputStream(File file):通过已经存在File类对象进行构造
- FileOutputStream(String name):通过名字进行构造

字节过滤输入输出

过滤流的作用是能够在读写数据的同时对数据进行处理,并且提供同步机制,使得某一个时刻只有一个线程访问这个输入输出流,防止多个线程同时对同一个输入输出流进行操作带来的坏结果。使用时必须把过滤流与某个具体的输入输出流相连接。
通常的做法是在构造方法的参数中指定要连接的输入输出流。
过滤流的父类是FileInputStream和FilterOutputStream,最常用的是他们的子类DataInputStream和DataOutputStream,用于完成平台无关的字节过滤输入输出处理。

DataInputStream
DataOutputStream

字符输入输出系列(字符IO)

输入输出两大分支,以Reader为父类的字符输入,以Writer为父类的字符输出。它们与各自的子类共同构成了字符输入输出体系

字符输入输出

Reader

是一个用于读取字符类的抽象类,为所有字符输入类的父类,其方法都是通过子类对象来调用的。
QQ图片20161129152829.png-11kB

Writer

是一个用于写入字符流的抽象类,为所有输出字符类的父类,其方法都是通过子类对象来调用的。

QQ图片20161129153044.png-37.3kB

字符标准输出

,。,。,这里没有字符标准输入
PrintWriter,主要完成字符标准输出流的文本格式化
常用构造方法:

  • 由文件名构造字符标准输出流对象
PrintWriter pw=new PrintWriter("data.txt");
  • 由字节输出流构造字符标准输出流对象
PrintWriter pw=new PrintWriter(System.out);
  • 由字符标准输出流对象构造新的字符标准输出流对象
PrintWriter pw1=new PrintWriter(pw);

字符缓冲输入输出

BufferedReader

从字符输入流中读取文本并缓冲各个字符,以便提供关于字符,数组和文本行的高效读取方式,还可以改变缓冲区的大小。
常用的构造方法:

BufferedReader br=new BufferedReader(Reader in);

普通方法常用就是:String readLine()读取一行字符串,并去掉回车换行符。

BufferedWriter

将文本写入字符输出流并缓冲各个字符,以提供单个字符,数组和字符串的高效写入方式,缓冲区的大小可以改变。常用的构造方法是BufferedWriter(Writer out),常用的方法是:void newLine(),用于写入一个回车符。

字符文件输入输出

FileReader类和FileWriter类。

FileReader

用来读取字符文件;
常用构造方法:

  • FileReader(File file)
  • FileReader(String filename)
FileWriter

用来写入字符文件。
构造方法:
QQ图片20161129155435.png-7.7kB

字符串输入输出

StringReader

使用字符串输入流读取一个字符串,构造方法:
StringReader(String string);

StringWriter

通过字符流的字符串缓冲区的输出来构造字符串,构造方法:
StringWriter()

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值