《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 BufferedReaderextends 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。
上一篇: Java程序设计基础【接口】总结
下一篇: