标签(空格分隔): java
参考:Java在线中文文档
[TOC]
IO这块的类,接口什么的实在是太多了,一直没有好好的理清过,下面花点时间来深入的掌握一下。原理还要慢慢地梳理。
什么是输入输出处理(IO)
包括对控制台,内存,文件,图形图像,网络和数据库的读写等。在Java语言中,java.io包就提供了
很多完成输入输出处理功能。
什么是流?
流是一种有序的字节源或目的,当程序需要读取数据时就要打开一个通向数据源的流;而当程序需要
写入数据的时候就会打开一个通向目的地的流,数据就好像在管道中流动一样。
流的分类
将流按三种方式分类:输入流和输出流,字节流和字符流,以及从一个特定地方读写的结点流和连接已经存在的流的过滤流。这种分类方式是相互重叠的
基本流一般是指
这四个抽象类表示的流,其他流均是他们派生出来的子类。其中InputStream
与OutputStream
是处理8位的字节流数据,Reader
和Writer
是处理16位的字符流数据。注意的是,字节流和字符流可以相互之间进行转换,使用的就是转换器InputStreamReader
和OutputStreamWriter
,InputStreamReader
将字节流InputStream
转换为Reader
的字符流。同理OutputStreamWriter
将OutputStream
字节流转换为Writer
的字符流。
FilterInputStream
和FileterOutputStream
继承基本流,并实现了过滤接口DataInput
和DataOutput
ObjectInputStream
和ObjectOutputStream
也继承基本流,并实现了对象接口ObjectInput
和ObjectOutput
随机文件RandomAccessFile
也实现了过滤接口,目的就是为了简化读写手续,统一数据读写方法。
文件流完成对磁盘文件的读写,而文件类File主要是管理文件或者文件夹的属性
字节输入输出,以InputStream为代表的输入和以OutputStream为代表的输出,它们和自己的子类一起构成了字节输入输出体系。
这个类是一个抽象类,为所有字节输入类的父类,其方法都是通过子类对象来调用的,主要方法有
这个类是抽象类,是所有字节输出类的父类,其方法都是通过子类对象来调用
System.in就是字节标准输入流的对象。主要接收控制台的输入,并提供read()方法读取数据。可以使用InputStream类的所有方法。这个对象有两种使用方式
Scanner in = new Scanner(System.in);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out就是标准输出流PrintStream的一个对象,主要完成数据的格式化输出和在控制台中输出各种数据类型结果。PrintStream是OutputStream的子类,因此System.out可以使用OutputStream的所有方法。自身的format()和printf()方法很有趣。,。,。
(没有想到一直使用这个东西,居然原理在今天被发现了,System.out是一个PrintStream对象,println()是该对象调用的一个方法,。,。,。
该类是InputStream的子类,用于完成读取文件的字节值功能,还可以读取如图像数据之类的原始数据流。
常用的构造方法:
该类是OutputStream的子类,用于将数据写入字节文件输出流,也可写入图像数据之类道德原始字节流。
常用的构造方法:
- FileOutputStream(File file):通过已经存在File类对象进行构造
- FileOutputStream(String name):通过名字进行构造
过滤流的作用是能够在读写数据的同时对数据进行处理,并且提供同步机制,使得某一个时刻只有一个线程访问这个输入输出流,防止多个线程同时对同一个输入输出流进行操作带来的坏结果。使用时必须把过滤流与某个具体的输入输出流相连接。
通常的做法是在构造方法的参数中指定要连接的输入输出流。
过滤流的父类是FileInputStream和FilterOutputStream,最常用的是他们的子类DataInputStream和DataOutputStream,用于完成平台无关的字节过滤输入输出处理。
输入输出两大分支,以Reader为父类的字符输入,以Writer为父类的字符输出。它们与各自的子类共同构成了字符输入输出体系
是一个用于读取字符类的抽象类,为所有字符输入类的父类,其方法都是通过子类对象来调用的。
是一个用于写入字符流的抽象类,为所有输出字符类的父类,其方法都是通过子类对象来调用的。
,。,。,这里没有字符标准输入
PrintWriter,主要完成字符标准输出流的文本格式化
常用构造方法:
PrintWriter pw=new PrintWriter("data.txt");
PrintWriter pw=new PrintWriter(System.out);
PrintWriter pw1=new PrintWriter(pw);
从字符输入流中读取文本并缓冲各个字符,以便提供关于字符,数组和文本行的高效读取方式,还可以改变缓冲区的大小。
常用的构造方法:
BufferedReader br=new BufferedReader(Reader in);
普通方法常用就是:String readLine()读取一行字符串,并去掉回车换行符。
将文本写入字符输出流并缓冲各个字符,以提供单个字符,数组和字符串的高效写入方式,缓冲区的大小可以改变。常用的构造方法是BufferedWriter(Writer out),常用的方法是:void newLine(),用于写入一个回车符。
FileReader类和FileWriter类。
用来读取字符文件;
常用构造方法:
使用字符串输入流读取一个字符串,构造方法:
StringReader(String string);
通过字符流的字符串缓冲区的输出来构造字符串,构造方法:
StringWriter()