2015-05-14 23:06 469人阅读 评论(0) 收藏 举报
 分类:
孙鑫-java基础(16)  I-O(4) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

回顾字节流输入输出 
 
Reader和Writer 
Reader和Writer这两个抽象类主要用来读写字符流。 
 
InputStreamReader是字节流通向字符流的桥梁 
BufferedReader提供一个ReadLine()方法 
 
OutputStreamWriter是字符流到字节流的桥梁 
BufferedWriter也提供了一个很有用的方法,请看示例: 
示例:

public static void main(String[] args) throws Exception{
//对文件的写入和对文件的读取
FileOutputStream fos = new FileOutputStream("1.txt");
//OutputStreamWriter这个函数的构造方法需要一个OutputStream对象
OutputStreamWriter osw = new OutputStreamWriter(fos);
//通常我们构造BufferedWriter去进行写入操作,是一个更有效的写入操作。参数需要Writer类型。
BufferedWriter bw = new BufferedWriter(osw);
bw.write("this is test BufferedWriter");
bw.close(); FileInputStream fis = new FileInputStream("1.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
System.out.println(br.readLine());
br.close();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

示例:直接读取控制台的输入流

        InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String str = null;
while((str=br.readLine())!=null){
System.out.println(str);
}
br.close();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

结果: 
xiaohong 
xiaohong


补充:字节流和字符流的区别 
 
干货1:因为字符流操作时使用了缓冲区,而 在关闭字符流时会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,则缓冲区中的内容是无法输出的,所以得出结论:字符流使用了缓冲区,而字节流没有使用缓冲区。


干货2:流分类: 
1.Java的字节流 
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。 
2.Java的字符流 
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。 
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new


干货3:在从字节流转化为字符流时,实际上就是byte[]转化为String时, 
public String(byte bytes[], String charsetName) 
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统的lang 
而在字符流转化为字节流时,实际上是String转化为byte[]时, 
byte[] String.getBytes(String charsetName) 
也是一样的道理

java-I/O File类(5)-Reader和Writer、OutputStreamWriter 、BufferedWriter、字节流和字符流的区别的更多相关文章

  1. java 字节流和字符流的区别 转载

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  2. java 字节流和字符流的区别

    转载自:http://blog.csdn.net/cynhafa/article/details/6882061 java 字节流和字符流的区别 字节流与和字符流的使用非常相似,两者除了操作代码上的不 ...

  3. Java进阶(四十五)java 字节流与字符流的区别

    java 字节流与字符流的区别(转载)   字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?   实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作 ...

  4. java 字节流与字符流的区别详解

    字节流与字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入 ...

  5. Java字节流与字符流的区别详解

    字节流与字符流 先来看一下流的概念: 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入 ...

  6. java IO的字节流和字符流及其区别

    1. 字节流和字符流的概念    1.1 字节流继承于InputStream    OutputStream,    1.2 字符流继承于InputStreamReader    OutputStre ...

  7. java 字节流与字符流的区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作 ...

  8. (转)java字节流和字符流的区别

    转载: http://www.cnblogs.com/dolphin0520/category/361055.html 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同 ...

  9. java中字节流与字符流的区别

    字节流 在I/O类库中,java.io.InputStream和java.io.OutputStream分别表示字节输入流和字节输出流,它们都是抽象类,不能实例化,数据流中的最小单位是字节,所以叫做字 ...

随机推荐

  1. Python break

    break退出循环 用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句. 比如计算1至100的整数和,我们用while来实现: sum = 0 x = ...

  2. 【故障处理141119】一次数据库不繁忙时一条sql语句2个运行计划导致业务超时的故障处理

    1,故障描写叙述: 一条select有两个运行计划.在sqlplus中运行选择好的运行计划.仅仅要40毫秒.而在程序中运行选择了差的运行计划,要1分23秒左右,导致前台业务超时报错. 2.故障解决: ...

  3. 【Linux】od命令

    用途 od命令主要用于查看非文本文件,通过指定该命令的不同选项可以以十进制.八进制.十六进制和ASCII码来显示 全称 od的全称为:Octal Dump 参数 -t :后面接各种类型的显示方式 a ...

  4. Spring 切面优先级

    之前我们提过的应用场景,一个原始对象可能会需要插入多个切面,如果我们按前几篇博客文章介绍的方法完成切面及其通知的注解声明,那么它的执行顺序是怎么样的呢? 本文将介绍AspectJ的切面如何划分优先级 ...

  5. hdu 4742 Pinball Game 3D(三维LIS&cdq分治&BIT维护最值)

    Pinball Game 3D Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. js中ip地址与整数的相互转换

    转载地址 //IP转成整型function _ip2int(ip) {    var num = 0;    ip = ip.split(".");    num = Number ...

  7. DBMS_SQL使用

    一.简介 DBMS_SQL包提供一个接口,用于执行动态SQL(包括DDL 和DML). DBMS_SQL定义了一个实体叫游标ID,游标ID是一个PL/SQL整型数,通过游标ID,可以对游标进行操作. ...

  8. C# 图片转换为base64

    WebRequest webRequest = WebRequest.Create("验证码url"); WebResponse webResponse = webRequest. ...

  9. 线程池c3p0和dbcp2的配置初始化实例

    一.c3p0 public class ConnectionManager { public static ComboPooledDataSource dataSource; static { try ...

  10. SQL Server2005 两台服务器上的数据库同步(转载)

    1.1测试环境 Item 发布机 A 订阅机 B OS Windows 2003 Server Windows 2003 Server SQL SQL Server 2005 企业版 SQL Serv ...