---------------------- android培训、java培训、期待与您交流! -------------------------
近期学习了java中的io的(input/output)stream,就是以流的形式来处理数据。
Java类库中的I/O分成输入与输出两部分,同样就有两种流,
按流的数据单位不同分为:字节流和字符流。
字符流:Reader和Writer
字节流:InputStream和OutputStream
按流的方向分为:输入流和输出流;
输入流:Reader和InputStream两种抽象类
输出流:Writer和OutputStream两种抽象类
和字节流与字符流之间的转换:InputStreamReader, OutputStreamWriter
输入流InputStream或Reader两个抽象类及其子类都有用于读取单个字节或字节数组的方法都是继承了read()的基本方法:
int | read() 参见 InputStream 的 read 方法的常规协定。 |
int | read(byte[] b, int off, int len) |
输出流OutputStream或Writer及其子类类都继承并含有名为write()的基本方法,用于写单个字节或字节数组。
protected abstract void | write() This abstract method needs to be implemented by subclasses. |
protected void | write(char ch) Writes out a character. |
protected void | write(char[] chars, int startIndex, int length) All write methods call into this one. |
根据流操作的基本规律,从以下几个方面进行选择:
1>明确源和目的,是需要输入或输出。
2>数据的操作对象(是否是纯文本),选择字节流或字符流。
3>根据对象的具体来源和目的的设备(内存、硬盘、键盘、控制器、服务器)来选择。
4>是否要提高效率,需要时引用缓冲Buffered(注意readLine和newLine的使用,有时需要转换流和print+ln的问题)。
5>为了方便,是否需要使用转换流InputStreamReader, OutputStreamWriter(也可用于转换编码)。
为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中,以避免频繁调用转换器。例如:
BufferedWriter out= new BufferedWriter(new OutputStreamWriter(System.out));
或者BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
编码进行练习:
import java.io.*;
class TransStreamDemo
{
public static void main (String[] args) throws IOException
{
//获取键盘录入对象,并把字节流转换成字符流进入缓冲区
BufferedReader bufr=
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw=
new BufferedWriter(new OutputStreamWriter(System.out));
String line=null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.writer(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
---------------------- android培训、java培训、期待与您交流! -------------------------
详情查询:黑马训练营