《Java 程序设计》— IO接口(I)

抽象类InputStream——抽象方法read()

抽象类OutputStream——抽象方法write()

 

节点流:用于对数据进行读写

      字节类型的节点流:

        文件:FileInputStream, FileOutputStream;

        内存(数组):ByteArrayInputStream, ByteArrayOutputStream;

        管道:PipedInputStream, PipedOutputStream;

      字符类型的字节流:

        文件:FileReader, FileWriter;

        内存(数组):CharArrayReader, CharArrayWriter;

        内存(字符串):StringReader, StringWriter;

        管道:PipedReader, PipedWriter;

处理流:用于对数据执行某种处理

        面向字节的处理流:BufferedInputStream, BufferedOutputStream, DataInputStream, DataOutputStream;

        面向字符的处理流:BufferedWriter, BufferedReader, InputStreamReader, InputStreamWriter;

InputStreamReader, InputStreamWriter用于将字节流按照指定的字符集转换到字符流:

例如:new InputStreamReader(System.in) - 将按照默认的字符集将键盘输入转换为字符流。

public class BufferedReader
extends Reader

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

        类BufferedReader提供了readLine()方法,可以一次从流中读一行。

例如:

import java.io.*;
public class ConvertStream
{
	public static void main(String[] args) throws IOException
	{
		String s;
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		while((s=in.readLine())!=null)
		{
			System.out.println("Read:"+s);
		}
	}
}

 

标准流对象:

标准输入:System.in; 是InputStream类的对象;

      char ch = System.in.read();

      注意:1、System.in.read()可能会抛出IOException异常。

               2、当键盘缓冲区中没有未被读取的数据时,执行System.in.read()将导致线程转入阻塞(block)状态。

               3、执行System.in.read()方法将从键盘缓冲区读入一个字节的数据,返回32位整形量。System.in只能从键盘读取二进制的数据,而不能把这些比特信息转换为复杂数据类型量(int char float等)。

      说明:System.in是一个未经处理的InputStream。

               BufferedReader的readLine()用来读取一行文本。

               先把System.in包装成BufferedReader。在这之前还需用InputStreamReader把System.in转换成Reader。

      如:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));//把标准输入通过InputStreamReader由二进制数据流变成字符数据流。

例如:

import java.io.*;
public class Echo
{
	public static void main(String[] args)
	{
		try
		{
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			System.out.print("Please enter an integer:");
			String s = in.readLine();
			int i = Integer.parseInt(s);
			System.out.println("You have entered an integer:"+i);			
		}
		catch(NumberFormatException e)
		{
			System.out.println("Number format error!");
		}
		catch(IOException e)
		{
			System.out.println(e.toString());
		}
	}
}

 

标准输出:System.out; System.out是一个预先处理过的,被包装成了PrintStream的对象。

标准错误:System.err; 同System.out。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值