Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1010|回复: 0

浅谈JAVA的标准数据流

[复制链接]

该用户从未签到

发表于 2011-9-13 15:22:13 | 显示全部楼层 |阅读模式
数据流一般分为输入流(InputStream)和输出流(OutputStream)两种,但是在操作文件时,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个输入流,而屏幕则只是一个输出流。
  java的标准数据流是指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:
  System.in
  “标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
  System.out
  “标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
  System.err
  “标准”错误输出流。此流已打开并准备接受输出数据。
  通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。
  下面以一个例子来说明:用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,count保存实际读入的字节个数,再以整数和字符两种方式输出buffer中的值。read方法在java.io包中,而且要抛出IOException异常,我们在这里用try/catch捕捉。程序如下(本例程序放在包biz.1cn.stream里面):
  package biz.1cn.stream;
  import java.io.IOException;
  /**
  * @author chenrz(simon)
  * @date 2006-6-29
  *

  * 标准数据流例子(www.1cn.biz)
  *

  */
  public class Input {
  public static void main(String[] args) {
  System.out.println("请输入:");
  // 输入缓冲区域
  byte buffer[] = new byte[512];
  int count;
  try {
  // 读取标准输入流
  count = System.in.read(buffer);
  System.out.println("实际读入的字节数目:" + count);
  System.out.println("输出结果:");
  // 直接输出buffer元素值
  for (int i = 0; i < count; i++) {
  System.out.print(buffer + " ");
  }
  System.out.println();
  // 以char方式输出buffer
  for (int i = 0; i < count; i++) {
  System.out.print((char) buffer);
  }
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
  下面说一下java.io包中的数据流及文件类
  InputStream是表示字节输入流的所有类的超类。需要定义InputStream的子类的应用程序必须始终提供返回下一个输入字节的方法,也就是以字节作为基本处理单位。
  直接已知子类:
  AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream
  OutputStream是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器,需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。
  直接已知子类:
  ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
  Reader用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
  直接已知子类:
  BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader
  Writer写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。
  直接已知子类:
  BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-5 03:25 , Processed in 0.544996 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表