字节流和字符流

     顾名思义,字节流就是操作的是字节,字符流操作的就是字符。其中字节流又可以分为字节输入流(InputStream)和字节输出流(OutputStream)。同样的字符流也可以分为字符输入流(Reader)和字符输出流(Writer)。字节输入流的用法和字符输入流的用法类似,字节输出流的用法和字符输出流的用法非常类似,最明显的区别是字节流是对字节的操作,字符流是对字符的操作。

     ①InputStream和Reader

通过查看API文档可以发现InputStream和Reader的核心方法分别是:

InputStream:

 

常见子类: ByteArrayInputStream, FileInputStreamFilterInputStream, InputStream, ObjectInputStream,StringBufferInputStream

 1 import java.io.*;
 2 
 3 public class InputStreamTest {
 4     public static void main(String[] args) throws IOException {
 5         InputStream is = new FileInputStream("f:/InputStream.txt");
 6 
 7         byte[] b = new byte[32];
 8         int len = 0;
 9         while ((len = is.read(b)) != -1) {
10             is.read(b, 0, len);
11             System.out.println(b);
12         }
13 
14     }
15 }
InputStream方法举例

 

 

Reader:

常见子类:BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

 1 import java.io.*;
 2 
 3 public class ReaderTest {
 4     public static void main(String[] args) throws IOException {
 5         Reader is = new FileReader("f:/InputStream.txt");
 6 
 7         char[] b = new char[32];
 8         int len = 0;
 9         while ((len = is.read(b)) != -1) {
10             is.read(b, 0, len);
11             System.out.println(b);
12         }
13 
14     }
15 }
Reader方法举例

如果运行上述两个例子的话会发现输出结果不一样,InputStream举例中输出的不是文件里面的内容,这是因为InputStream读取的是一个个二进制码
             

 

 

              2.OutputStream和Writer

OutputStream和Writer的核心方法是“写”,就是将数据写入到输出流里面去。分别看下他们的API上面的方法:

OutputStream:

常见子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream

 

Writer:

常见子类:BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

应为两者都是类似的,这里就举只一个Writer的例子

 1 import java.io.*;
 2 
 3 public class WriterTest {
 4     public static void main(String[] args) throws IOException {
 5         Writer wr = new FileWriter("f:/Writer.txt");
 6 
 7         String s = new String("我是一个大公鸡");
 8         wr.write("我\r\n");
 9         wr.write(s, 0, s.length());
10         wr.flush();
11         wr.close();
12 
13     }
14 }
Writer例子

记得写完之后一定要刷新缓冲,并且关闭流。

 

我不知道这些有没有说清楚,如果没有说清楚或者错误的地方希望大家不要给我脸,尽情地指出来,不胜感激

下一篇会详细写一下,那个各种流中的常见子类。

posted on 2013-08-04 14:58  Hadley_pu  阅读(1320)  评论(0编辑  收藏  举报