IO篇entry1
关键词: 数据流; 字节流与字符流;
数据流的基本概念
流的分类
流从流动方向上看:一般分为输入流和输出流 。
从读取类型上分:一般分为字节流和字符流。
流从发生的源头可以分为节点流和过滤流类 。
Java的标准输入输出流
标准输入,对象是键盘,Java对应类是System.in。
标准输出,对象是屏幕,Java对应类是System.out。
标准错误输出,对象也是屏幕,Java对应类是System.err。
标准输入输出的转向,见JDK中的System类的静态方法 。
例 从键盘输入字符,并对字符数目进行统计。
程序说明
1)本例用System.in.read(buffer)从键盘输入一串字符(以回车换行符为结束标志),存储在缓冲区buffer中,count保存实际读入的字节个数,再以整数和字符两种方式输出buffer中的值。
2) 程序中,main方法采用throws子句抛出IOException异常交由系统处理。
import java.io.*;
public class Input1
{
public static void sumChar(byte[] b){ //字母统计
int n=0;
for (int i=0;i<b.length ;i++ )
{
if(b[i]>='a'&&b[i]<='z') n++;
}
System.out.println("char count="+n);
}
public static void main(String args[]) throws IOException
{
System.out.println("Input: ");
byte buffer[] = new byte[512]; //输入缓冲区
int count = System.in.read(buffer);
//读取标准输入流放入buffer,并返回读取数
System.out.println("Output: ");
for (int i=0;i<count;i++) //输出buffer元素值
{System.out.print(" "+buffer[i]);}
System.out.println();
for (int i=0;i<count;i++) //按字符方式输出buffer
{System.out.print((char) buffer[i]);}
System.out.println("count = "+ count); //buffer实际长度
sumChar(buffer);
}
}
字节流与字符流
字节流
InputStream
OutputStream
常用字节流
文件流 FileInputStream和FileOutputStream
字节数组流ByteArrayInputStream 和ByteArrayOutputStream
管道流 PipedInputStream和PipedOutputStream
对象流 ObjectOutputStream和ObjectInputStream
对象流 ObjectOutputStream和ObjectInputStream
缓冲流BufferedInputStream和BufferedOutputStream
数据流DataInputStream和DataOutputStream
打印流 PrintStream
字符流
Reader和Writer
字节流到字符流的转化
输入字节流转为字符流需要用到inputstreamReader的构造方法
输出字符流转为字节流用到OutputStreamWriter或PrintWriter的构造方法