java IO里有个OutputStreamWriter 和 InputStreamReader 说作用是转换流.
比如:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d:/test.txt"));
这样的好处是 将File这个字节流可以以字符的形式操作.
我搞不懂为啥要这么包装? 直接用FileWriter就得了.他就是字符流呀.还有.IO一般用在什么地方.哪几个类比较常用?

解决方案 »

  1.   

    java io 的操作比较灵活,对一种问题可能有多种方式,自己根据习惯选一个就可以了。
    io 一般就是用到文件操作或系统的导入导出里面,比较常用的是BufferReader,它的readline()可以读取文件里的具体行,其它的类根据具体情况自己选就是了,反正字节流和字符流都能相互转换,基本上都能转成你想要的流。
      

  2.   

    恩 我当时感觉有点迷惑.看了真是这样.流都可以转化.只要转化成合适的就可以了..
    如果这样看 貌似 字节流有点鸡肋啊.. 能有字符谁用字节干嘛. Buffered确实值得用来装饰.可以用
    readLine();
      

  3.   

    有时候需要从键盘输入的时候,需要转化成字符的时候就可能要用到 
    BufferedReader bd =new BufferedReader(new OutputStreamReader(System.in));不见得都是对于文件的操作
      

  4.   

    字节流有点鸡肋啊.. 能有字符谁用字节干嘛
    并非所有的文件都是文本文件直接用FileWriter就得了
    如果你操作的文本的编码和你本地码相同你这样可以
    但也有的情况是涉及编码转换的IO一般用在什么地方
    IO无处不在
      

  5.   

    此言差矣,字节流很有用的,在那些无需面向字符的i/o程序中我们就应该首选字节流,而且那些二进制文件,比如zip文件,是必须要用字节流传输的
      

  6.   

       过滤流和包装类是定义在节点流的基础之上的。程序中可以通过一个间接的流类去调用节点流类,以达到更加灵活方便的读取给种类型的数据,这个间接的流类就叫做过滤流类,也叫包装类。如果我们仅仅使用节点流类虽然也可以达到输入输出的目的,但是我们必须先将其他类型的数据的数据转换成字节数组后写入文件或是将从文件中读取的字节数组转换成其他类型,这样带来了一些困难和麻烦。因此就引入了包装类作为一个中间类,这个中间类提供了读写各种类型的数据的各种方法,在这个中间类的方法内部可以将其他数据类型装换为字节数组,然后调用底层的节点类将这个字节数组写入目标设备。过滤流类的引入方便了数据的读写。     BufferedInputStream与BufferedOutputStream类,缓冲流为IO流增加了内存缓冲区,增加缓冲区有两个基本目的:    1、允许Java程序一次不止操作一个字节,提高了程序的性能    2、由于有了缓冲区,使得在流上执行skip,和reset方法都成为可能BufferedInputStream与BufferedOutputStream是Java提供的两个缓冲区包装类,不管底层系统是否使用了缓冲区,这两个类在自己的实例对象中创建缓冲区。 DataInputStream与DataOutputStream类    DataInputStream允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。应用程序可以使用DataOutputStream写入稍后由数据输入流读取的数据。PrintStream类PrintStream类提供了一系列的print和println方法,可以将基本数据类型的数据格式化成字符串输出。    ObjectInputStream与ObjectOutputStream这两个包装类,用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。    这两个类所读写的对象必须实现了Serializable接口。对象中的translent和static类型的成员变量不会被读取和写入。字节流与字符流的转换InputStreamReader和OutputStreamWriter是用于将字节流转换成字符流来读写的两个类。 InputStreamReader可以将一个字节流中的字节解码成字符后读取,OutputStreamWriter将字符编码成字节后写入到一个字节流中。
      

  7.   

    假如要做的事情是复制一个EXE文件,那么字符流连个鸡肋都不是,只能叫无能为力.
      

  8.   

    字节流对于非字符型的文件比较好用,比如:*.jpg。
    字符流对于TXT之类的比较好用