黑马程序员-----关于IO流学习日志

 

---------------------- android培训java培训、期待与您交流! -------------------------

近期学习了java中的io的(input/output)stream,就是以流的形式来处理数据。

Java类库中的I/O分成输入与输出两部分,同样就有两种流,

按流的数据单位不同分为:字节流和字符流。

字符流:Reader和Writer

字节流:InputStream和OutputStream

按流的方向分为:输入流和输出流;

输入流:Reader和InputStream两种抽象类

输出流:Writer和OutputStream两种抽象类

和字节流与字符流之间的转换:InputStreamReader, OutputStreamWriter

 

输入流InputStream或Reader两个抽象类及其子类都有用于读取单个字节或字节数组的方法都是继承了read()的基本方法:

 intread()
          参见 InputStreamread 方法的常规协定。
 intread(byte[] b, int off, int len)

 

输出流OutputStream或Writer及其子类类都继承并含有名为write()的基本方法,用于写单个字节或字节数组。

protected abstract  voidwrite()
          This abstract method needs to be implemented by subclasses.
protected  voidwrite(char ch)
          Writes out a character.
protected  voidwrite(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培训、期待与您交流! -------------------------

详情查询:黑马训练营

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值