你好!
    我想问一下对于System.in类的包装方式除了以下方式处还有其它方式吗?
    new BufferedReader(new InputStreamReader(System.in));
    thank you in advance

解决方案 »

  1.   

    不太明白问题...System是一个类,然后in是它里的一个成员.class System
    {
      xxx in;
    }
      

  2.   

    还有一个问题是,我想细一点的学习java的io操作 ,然后再学习nio操作,能否给些学习上的意见.
      

  3.   

    比如这样的包装方式(可能用包装一词不对吧)
    new DataInputStream(new ByteArrayInputStream(sBytes));
    new DataOutputStream(new ByteArrayOutputStream());
    这种方式我有编码的时候常用
    但如果这样呢?
    new DataInputStream(System.in);
    是不是一无用处..的作法..
      

  4.   

    System.in 是 InputStream,任何对其的的包装都是允许的。比如
    Scanner
    BufferedInputStream
      

  5.   

    再提问..如何结合DataInputStream与System.in对象一起使用(正常使用),如何包装,需要再结合那些流?
      

  6.   

    I/O重定向操作的是字节流,而不是字符流,所以用InputStream,OutputStream而不能用Reader,Writer
     InputStreamReader是将字节流转为字符流
      

  7.   

    看了半天没看懂,个人理解System.in既为一个InputStream,哪能放这个接口,哪就有System.in
    的位置~搬张凳子过来学习~
      

  8.   

    个人认为你还是要去看看API,了解下每个IO类
      

  9.   

    package Test;
    import java.io.*;
    public class Test1
    {
    public static void main(String[] args)
    {
    DataInputStream in=new DataInputStream(System.in);
    try
    {
    while(true)
    {
    System.out.print((char)(in.read()));
    }
    }
    catch(Exception e)
    {
    try{in.close();}catch(Exception ie){}
    }
    }
    }
    感觉写IO就象堆积木,按照一定规则就能随意拼凑的~都可能对,但并不都是最合理的
      

  10.   

    new BufferedReader(new InputStreamReader(System.in)); System.in 是一个字节输入流(键盘输入是字节流,别当成是字符流,System.out屏幕输出也一样);InputStreamReader是字节流通向字符流的桥梁,包装System.in后就可以将字节流转换成字符流(还可指定字符集);BufferedReader是具有读写缓存的包装流,对上述转换成的字符流进行再包装以实现IO缓存,更优化性能。这就是这里套3层的原因。