InputStreamReader 和 OutputStreamWriter类用法简介及演示

最近正好在学java,对文件流比较感兴趣,因为C的文件操作算是比较简单的,没想到java弄得很复杂啊!

现在说说下面这两个类!

InputStreamReader 和 OutputStreamWriter类用法简介。

一、InputStreamReader类

InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类

InputStreamReader isr = new InputStreamReader(InputStream in,String charsetName);//构造一个指定编码集的InputStreamReader类。

参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。

或者    InputStream in = new FileInputStream(String fileName);//读取文件中的数据。可以看出FileInputStream 为InputStream的子类。

主要方法:int read();//读取单个字符。

int read(char []cbuf);//将读取到的字符存到数组中。返回读取的字符数。

[java] view plain copy

  1. public static void transReadNoBuf() throws IOException {
  2. /**
  3. * 没有缓冲区,只能使用read()方法。
  4. */
  5. //读取字节流
  6. //      InputStream in = System.in;//读取键盘的输入。
  7. InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
  8. //将字节流向字符流的转换。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节.
  9. InputStreamReader isr = new InputStreamReader(in);//读取
  10. //      InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//综合到一句。
  11. char []cha = new char[1024];
  12. int len = isr.read(cha);
  13. System.out.println(new String(cha,0,len));
  14. isr.close();
  15. }
  16. public static void transReadByBuf() throws IOException {
  17. /**
  18. * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。
  19. */
  20. //读取字节流
  21. //      InputStream in = System.in;//读取键盘上的数据
  22. InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
  23. //将字节流向字符流的转换。
  24. InputStreamReader isr = new InputStreamReader(in);//读取
  25. //创建字符流缓冲区
  26. BufferedReader bufr = new BufferedReader(isr);//缓冲
  27. //      BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。
  28. /*  int ch =0;
  29. ch = bufr.read();
  30. System.out.println((char)ch);*/
  31. String line = null;
  32. while((line = bufr.readLine())!=null){
  33. System.out.println(line);
  34. }
  35. isr.close();
  36. }

二、OutputStreamWriter类

OutputStreamWriter 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。

构造方法:

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out);//构造一个默认编码集的OutputStreamWriter类

OutputStreamWriter osw = new OutputStreamWriter(OutputStream out,String charsetName);//构造一个指定编码集的OutputStreamWriter类。

参数 out对象通过 InputStream out = System.out;获得。//打印到控制台上。

或者    InputStream out = new FileoutputStream(String fileName);//输出到文件中。可以看出FileoutputStream 为outputStream的子类。

主要方法:void write(int c);//将单个字符写入。

viod write(String str,int off,int len);//将字符串某部分写入。

void flush();//将该流中的缓冲数据刷到目的地中去。

[java] view plain copy

  1. public static void transWriteNoBuf() throws IOException {
  2. OutputStream out = System.out;//打印到控制台
  3. //      OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件
  4. OutputStreamWriter osr = new OutputStreamWriter(out);//输出
  5. //      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句可以综合到一句。
  6. //      int ch = 97;//a
  7. //      int ch = 20320;//你
  8. //      osr.write(ch);
  9. String str = "你好吗?";//你好吗?
  10. osr.write(str);
  11. osr.flush();
  12. osr.close();
  13. }
  14. public static void transWriteByBuf() throws IOException {
  15. //      OutputStream out = System.out;//打印到控制台。
  16. OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。
  17. OutputStreamWriter osr = new OutputStreamWriter(out);//输出
  18. //      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。
  19. BufferedWriter bufw = new BufferedWriter(osr);//缓冲
  20. //      int ch = 97;//a
  21. //      int ch = 20320;//你
  22. //      osr.write(ch);
  23. String str = "你好吗?\r\n我很好!";//你好吗?
  24. bufw.write(str);
  25. bufw.flush();
  26. bufw.close();
  27. }

 流转换程序1:

[java] view plain copy

  1. package IOtest;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.InputStreamReader;
  9. import java.io.OutputStream;
  10. import java.io.OutputStreamWriter;
  11. public class TransStreamtest {
  12. /**
  13. * 主要的类:    in1,    InputStream
  14. *                      创建对象 InputStream in = System.in;
  15. *              in2,    InputStreamReader  没有readLine()方法
  16. *                      主要方法:
  17. *                          read()读取单个字符,一个汉字也为一个字符。
  18. *                          read(char[] cbuf)将字符读入数组。
  19. *                          close().关闭此流和相关联资源。
  20. *              in3,    BufferedReader     有read(),readLine()方法。
  21. *              out1,   OutputStream
  22. *                      创建对象 OutputStream in = System.out;
  23. *              out2,   OutputStreamWriter
  24. *                      主要方法:
  25. *                          write(int c)//写入单个字符。
  26. *                          write(char[] cbuf,int off,int len)//写入数组的某一部分
  27. *                          write(String str,int off,int len)//写入字符串烦人某一部分。
  28. *                          flush();//刷新该流中的缓冲。
  29. *                          close();
  30. *              out3,   BufferedWriteer     有Write(int ch),newLine()方法。
  31. *
  32. *
  33. * @throws IOException
  34. */
  35. public static void main(String[] args) throws IOException {
  36. //      transReadByBuf();
  37. //      transReadNoBuf();
  38. transWriteNoBuf();
  39. //      transWriteByBuf();
  40. }
  41. public static void transWriteNoBuf() throws IOException {
  42. OutputStream out = System.out;//打印到控制台
  43. //      OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件
  44. OutputStreamWriter osr = new OutputStreamWriter(out);//输出
  45. //      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句可以综合到一句。
  46. //      int ch = 97;//a
  47. //      int ch = 20320;//你
  48. //      osr.write(ch);
  49. String str = "你好吗?";//你好吗?
  50. osr.write(str);
  51. osr.flush();
  52. osr.close();
  53. }
  54. public static void transWriteByBuf() throws IOException {
  55. //          OutputStream out = System.out;//打印到控制台。
  56. OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。
  57. OutputStreamWriter osr = new OutputStreamWriter(out);//输出
  58. //          OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。
  59. BufferedWriter bufw = new BufferedWriter(osr);//缓冲
  60. //      int ch = 97;//a
  61. //      int ch = 20320;//你
  62. //      osr.write(ch);
  63. String str = "你好吗?\r\n我很好!";//你好吗?
  64. bufw.write(str);
  65. bufw.flush();
  66. bufw.close();
  67. }
  68. public static void transReadNoBuf() throws IOException {
  69. /**
  70. * 没有缓冲区,只能使用read()方法。
  71. */
  72. //读取字节流
  73. //      InputStream in = System.in;//读取键盘的输入。
  74. InputStream in = new FileInputStream("D:\\demo.txt");//读取文件的数据。
  75. //将字节流向字符流的转换。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节.
  76. InputStreamReader isr = new InputStreamReader(in);//读取
  77. //      InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\demo.txt"));//综合到一句。
  78. char []cha = new char[1024];
  79. int len = isr.read(cha);
  80. System.out.println(new String(cha,0,len));
  81. isr.close();
  82. }
  83. public static void transReadByBuf() throws IOException {
  84. /**
  85. * 使用缓冲区 可以使用缓冲区对象的 read() 和  readLine()方法。
  86. */
  87. //读取字节流
  88. //      InputStream in = System.in;//读取键盘上的数据
  89. InputStream in = new FileInputStream("D:\\demo.txt");//读取文件上的数据。
  90. //将字节流向字符流的转换。
  91. InputStreamReader isr = new InputStreamReader(in);//读取
  92. //创建字符流缓冲区
  93. BufferedReader bufr = new BufferedReader(isr);//缓冲
  94. //      BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\demo.txt")));可以综合到一句。
  95. /*  int ch =0;
  96. ch = bufr.read();
  97. System.out.println((char)ch);*/
  98. String line = null;
  99. while((line = bufr.readLine())!=null){
  100. System.out.println(line);
  101. }
  102. isr.close();
  103. }
  104. }

 流转换程序2:

[java] view plain copy

    1. package readKey;
    2. import java.io.FileInputStream;
    3. import java.io.FileOutputStream;
    4. import java.io.FileReader;
    5. import java.io.FileWriter;
    6. import java.io.IOException;
    7. import java.io.InputStreamReader;
    8. import java.io.OutputStreamWriter;
    9. public class TransStreamDemo3 {
    10. /**
    11. * @param args
    12. * @throws IOException
    13. */
    14. public static void main(String[] args) throws IOException {
    15. //      writeText_1();
    16. //      writeText_2();
    17. //      writeText_3();
    18. //      ReadTest_1();
    19. //      ReadTest_2();
    20. //      ReadTest_3();
    21. }
    22. public static void ReadTest_3() throws IOException {
    23. InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"UTF-8");
    24. char []ch = new char[20];
    25. int len = isr.read(ch);
    26. System.out.println(new String(ch,0,len) );
    27. isr.close();
    28. }
    29. public static void ReadTest_2() throws IOException {
    30. InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\utf-8.txt"),"GBK");
    31. char []ch = new char[20];
    32. int len = isr.read(ch);
    33. System.out.println(new String(ch,0,len) );
    34. isr.close();
    35. }
    36. public static void ReadTest_1() throws IOException {
    37. FileReader fr = new FileReader("D:\\demo.txt");
    38. char []ch = new char[20];
    39. int len = fr.read(ch);
    40. System.out.println(new String(ch,0,len) );
    41. fr.close();
    42. }
    43. public static void writeText_3() throws IOException {
    44. OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\utf-8.txt"),"UTF-8");
    45. osw.write("你好吗");
    46. osw.close();
    47. }
    48. public static void writeText_2() throws IOException {
    49. FileWriter fw = new FileWriter("D:\\gbk1.txt");
    50. fw.write("你好啊");
    51. fw.close();
    52. }
    53. public static void writeText_1() throws IOException {
    54. OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\gbk.txt"),"GBK");
    55. /*
    56. *和上面的等同
    57. * FileWriter fw = new FileWriter("D:\\gbk1.txt");
    58. * 操作文件的字节流 + 默认的编码表
    59. */
    60. osw.write("你好吗");
    61. osw.close();
    62. }
    63. }
时间: 2024-10-14 16:56:10

InputStreamReader 和 OutputStreamWriter类用法简介及演示的相关文章

InputStreamReader 和 OutputStreamWriter类使用方法简单介绍,及演示。

InputStreamReader 和 OutputStreamWriter类使用方法简单介绍. 一.InputStreamReader类 InputStreamReader 将字节流转换为字符流.是字节流通向字符流的桥梁.假设不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK. 构造方法: InputStreamReader isr = new InputStreamReader(InputStream in);//构造一个默认编码集的InputStreamReader类 Inp

转换流--OutputStreamWriter类与InputStreamReader类

12.4  转换流--OutputStreamWriter类与InputStreamReader类 整个IO包实际上分为字节流和字符流,可是除了这两个流之外,还存在一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象. InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象. 假设以文件操作为例,则内存中的字符数据须要

转换流: InputStreamReader 和 OutputStreamWriter

/* * 1.转换流: InputStreamReader 和 OutputStreamWriter 一对. * * 1) InputStreamReader 字节转换成字符的一个输入流,最后,以字符方式读取数据. * OutputStreamWriter 字符转换成字节的一个输出流,最后,以字节方式输出数据. * * 2) 功能: 当给的类型数据与要的类型数据不一致时,需要进行转换. * 另一个功能: 可以为输入/输出指定字符编码集,从而以指定的字符编码集实现数据存盘管理或读取相应字符编码集的

Java IO: InputStreamReader和OutputStreamWriter

作者: Jakob Jenkov 译者: 李璟([email protected]) 本章节将简要介绍InputStreamReader和OutputStreamWriter.细心的读者可能会发现,在之前的文章中,IO中的类要么以Stream结尾,要么以Reader或者Writer结尾,那这两个同时以字节流和字符流的类名后缀结尾的类是什么用途呢?简单来说,这两个类把字节流转换成字符流,中间做了数据的转换,类似适配器模式的思想. InputStreamReader 原文链接 InputStream

display:table-cell的用法简介

display:table-cell的用法简介:display属性的使用相当频繁,比如display:block或者display:inline等,但是对于display:table-cell可能比较陌生,因为此属性在特定的情况下会发挥很大的作用,下面就简单介绍它的作用,先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

InputStreamReader、OutputStreamWriter

流按处理单位不同可以划分为字节流和字符流.字节流以字节为单位进行读写,字符流以字符为单位进行读写.一般在处理图片,多媒体等原始字节信息时,用字节流操作(如FileInputStream FileOutputStream等).如文件包含的是字符信息,用字符流处理. InputStreamReader是字节流通向字符流的桥梁,可以实现字节流到字符流的转化.实际编码中常常使用BufferedReader包装InputStreamReader. import java.io.BufferedReader

压力测试工具tsung用法简介

tsung是用erlang开发的一款简单易用的压力测试工具,可以生成成千上万的用户模拟对服务器进行访问.目前对tsung的理解也仅限于会简单的应用,其内部结构没有深入研究过. 1.安装 tsung是用erlang编写的,所以首先安装erlang的运行环境.然后就是按照tsung的官网下载编译tsung.需要注意的是,生成测试报告需要gnuplot和perl的支持,其中perl需要安装Template扩展.具体安装过程请看相关手册或者google之. 2.配置文件 默认情况下,tsung会加载配置

Intent用法简介

Intent作为联系各Activity之间的纽带,其作用并不仅仅只限于简单的数据传递.通过其自带的属性,其实可以方便的完成很多较为复杂的操作.例如直接调用拨号功能.直接自动调用合适的程序打开不同类型的文件等等.诸如此类,都可以通过设置Intent属性来完成. Intent主要有以下四个重要属性,它们分别为:            Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作.通过setAction()方法或在清单文件AndroidManifest.xm

qss(stylesheet)用法简介(一)

QPushButton按钮evilButton  { background-color: red } QPushButton#evilButton { background-color: red; border-style: outset; border-width: 2px; border-color: beige; } QPushButton#evilButton { background-color: red; border-style: outset; border-width: 2px