I/O流的典型使用方法

 1.输入缓冲文件
    可以使用以String或FIle对象作为文件名的FileReader。为了提高速度,我们将产生的引用传递给BufferedReader构造器用于文件缓冲,由于BufferedReader也提供readline()方法,所以它将是最终文件读取的接口。

 

2.从内存输入
    下面的示例,从BufferedInputFile.read()读入的String结果被用来创建一个StringReader。然后调用read()每次读取一个字符,并把它发送到控制台。
    注意read()是以int形式返回下一个字节,因此必须类型转换为char才能正确打印。

 

3.格式化的内存输入
    DataInputStream是一个面向字节的I/O类,因此我们必须使用InputStream而不是Reader类。当然我们可以用InputStream以字节形式读取文件,但是这里读取字符串。
    必须为ByteArrayInputStream提供字节数组,为了产生该数组,String提供了一个可以实现此项工作的getBytes()方法。

 

 

    如果我们从DataInputStream用readByte()一次一个字节地读取字符,那么任何字符的值都是合法的结果,因此返回值不能用来检测输入是否结束,相反,我们可以使用available()方法查看还有多少可供读取的字符。

    注意。available()的工作方式会随着所读取的媒介类型的不同而有所不同;字面意思就是“在没有阻塞的情况下能读取的字节数”。对于文件,这个就意味着整个文件。但是对于不同类型的流,可能就不是这样,因此需要谨慎使用。

    我们也可以通过捕获异常的方式检测输入的末尾。但是,使用异常进行流控制,被认为是对异常特性的错误使用。

 

4.基本的文件输出

    FileWriter的对象可以向文件写入数据。首先,创建一个与指定文件连接的FileWriter。实际上,我们通常会用BufferedWriter将其包装起来用以缓冲输出(尝试移除此包装来感受对性能的影响——缓冲往往能显著地增加I/O操作的性能)。在本例中,为了提供格式化机制,它被装饰成了PrintWriter。

 

    PrintWriter提供了辅助构造器,使得可以简写装饰工作

 

    遗憾的是,其他常见的写入任务没有快捷方式,因此典型的I/O仍旧包含大量的冗余文本。

 

5.从标准输入中读取

    按照标准I/O模型,Java提供了System.in、System.out、System.err。其中后两个已被包装成PrintStream对象,而前者未经处理的InputStream。这意味着在读取System.in之前必须对其进行包装。

    通常我们会用readLine()一次一行地读取输入,因此,我们将System.in包装成BufferedReader来使用。这要求我们必须用InputStreamReader把System.in转换成Reader。

    回车和ctrl-z都能停止循环。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值