Java 流(Stream)、文件(File)和IO

Java 流(Stream)、文件(File)和IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列输入流表示从一个源读取数据输出流表示向一个目标写数据

读取控制台输入

Java 的控制台输入由 System.in 完成, System.in 代表 控制台输入

为了获得控制台输入,可以创建一个字符流的输入流对象 InputStreamReader,该对象连接到 System.in控制台输入。

然后创建一个字符流的缓冲区BufferedReader对象,该缓冲区连接到输入流,从输入流读取数据。

InputStreamReader 是 字节流,按字节读取控制台内容,

Reader类及其子类提供的字符流的读取char,inputStream及其子类提供字节流的读取byte;

Writer类及其子类提供字符流的写入char,OutputStream及其子类提供字节流的写入byte。

 

 

InputStream、OutputStream

 

处理字节流的抽象类

 

InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.

 

OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.

 

 

 

2.InputStreamReader  OutputStreamWriter

 

处理字符流的抽象类

 

InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

 

OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流

.

3.BufferedReader BufferedWriter

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,

从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

BufferedWriter  由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

 

 

所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;

InputStreamReader可以将字节流转换成字符流方式,是reader和stream之间的桥梁

 

 

InputStream is = new InputStream(System.in);
BufferedReader br = new BufferedReader(is);
br.read(); -- 读取一个字符
br.readLine(); --读取一行字符串

BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:

int read( ) throws IOException

每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。

 

// 使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRRead {
public static void main(String args[]) throws IOException
{
char c;
// 使用 System.in 创建 BufferedReader 
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("输入字符, 按下 'q' 键退出。");
// 读取字符
do {
c = (char) br.read();
System.out.println(c);
} while(c != 'q');
}
}

 

posted @ 2018-03-29 17:49  C+++++++wyl  阅读(171)  评论(0编辑  收藏  举报