AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream 

解决方案 »

  1.   

    我的意思是*InputStream类(也就是softbugg提到的那些)的构造函数都需要InputStream作为参数(FileInputStream类除外),而InputStream本身是抽象类,从InputStream继承而来的类又是*InputStream类。如果我要从控制台读入一个Double数,怎么用DataInputStream类实现呢?
      

  2.   

    System.in里面好像没有getinputstream()这个方法啊?我在1.5的文档里找过了。不知道samkuang()的JDK是什么版本啊?
      

  3.   

    InputStream一般是从文件,网络,输入等方式得到的。
    如果单纯的实例化一个InputStream是没有意义的。
      

  4.   

    楼主可以看一下jdk中相关的源代码,对你的问题会有很好的回答!
      

  5.   

    java流分两一种:一种底层流,一种过滤(高层)流,FileInputStream(String path)
    FileOutputStream
    文件读写ByteArrayInputStream(byte[]) 
    ByteArrayOutputStream
    字节数组
    是第一种,不用流来构造DataInputStream
    DataOutputStreamBufferedInputStream
    BufferedOutputStreamObjectInputStream
    ObjectOutputStreamPrintStream
    都是第二种,一般都是用底层流来构造
      

  6.   

    如果我要从控制台读入一个Double数,怎么用DataInputStream类实现呢?===========================
    DataInputStream在读写的时候,是按字节来读写的,
    从控制台输入的东西不用它来读,一般是用来把数据写入到
    文件,之后再用它来读回来,
    请注意,你用什么方式写,就得用什么方式对着来读,才能保证数据的准确
    如:你不能用writeInt()写一个数据,之后再用readDouble来读回来从控制台输入一般都是这样的
    public static void main(String[] args) throws Exception{
         BufferedReader bf = new BufferedReader(
         new InputStreamReader(System.in));
        
         double d = Double.parseDouble(bf.readLine());
         System.out.println(d);
        }