这段代码里DataInputStream.readLine过时,在功能不变的情况下怎么改?
如果用BufferedReader,它没有readDouble类似的方法
      
DataInputStream in5 = 
        new DataInputStream(
         new BufferedInputStream(
            new FileInputStream("Data.txt"))); 
      System.out.println(in5.readLine()); 
      System.out.println(in5.readDouble()); 

解决方案 »

  1.   

    已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 开始,读取文本行的首选方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 类读取文本行的程序可以改为使用 BufferedReader 类,只要将以下形式的代码: 
         DataInputStream d = new DataInputStream(in);
     替换为: 
         BufferedReader d
              = new BufferedReader(new InputStreamReader(in));
    API啊,看看就有说明了
      

  2.   

    BufferedReader.readLine()之后你可以继续用
    DataInputStream.readDouble啊,就多开一个引用而已
      

  3.   

    BufferedReader br = new BufferedReader(new FileReader(new File("Data.txt")));
    String line = br.readLine();
    while (null != line)
    {
        System.out.println(br.readLine());
        line = br.readLine();
    }
      

  4.   


    import java.io.FileInputStream;
    import java.io.ObjectInput;
    import java.io.ObjectInputStream;public class Test {
    public static void main(String[] args) throws Exception {
    ObjectInput oi = new ObjectInputStream(new FileInputStream("xxx.xxx"));
    System.out.println(oi.readLine());
    System.out.println(oi.readDouble());
    }}
      

  5.   

    oi.close();//不要忘记关闭流对象
      

  6.   

    如下 FileOutputStream的构造函数里有一个可以实现在末行追加文字 
    PrintStream ps=new PrintStream(new FileOutputStream(file,true))
      

  7.   

    这是根据2楼提示写的源码,24行抛出异常
    D:\JavaWork\mySave>java test data.txt
    hello, this is data.txt
    java.io.EOFException
            at java.io.DataInputStream.readFully(DataInputStream.java:180)
            at java.io.DataInputStream.readLong(DataInputStream.java:399)
            at java.io.DataInputStream.readDouble(DataInputStream.java:451)
            at test.main(test.java:24)//test.java
    import java.io.*;public class test
    {
        public static void main(String[] args)
        {
            try
            {//写
                File fi = new File(args[0]);
                if(fi.exists())
                   fi.delete();
                fi.createNewFile();   
                DataOutputStream dos = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(fi) ) );
                dos.writeBytes("hello, this is " + args[0] + "\n");
                dos.writeDouble((double)3.1415);
                dos.close();          //读
                BufferedInputStream bis = new BufferedInputStream( new FileInputStream(args[0]));
                DataInputStream in5 = new DataInputStream(bis);
                BufferedReader in5_t = new BufferedReader(new InputStreamReader(bis)); 
                System.out.println(in5_t.readLine());  
                System.out.println(in5.readDouble());
                bis.close();
                in5.close();
                in5_t.close();
             }
             catch(Exception e)
             {
                e.printStackTrace();
             }   
        }
    }
      

  8.   

    自己写个类呗
      class MyDataInputStream implements DataInput
        {
            private DataInputStream dis;
            private BufferedReader br;        public MyInputStream(DataInputStream dis)
            {
                this.dis = dis;
                br = new BufferedReader(new InputStreamReader(new BufferedInputStream(dis)));
            }        @Override
            public double readDouble() throws IOException
            {
                return dis.readDouble();
            }        @Override
            public String readLine() throws IOException
            {
                return br.readLine();
            }
            //其他方法略
        }
      

  9.   

    楼主看一下java.util.Scanner的API,看看能不能满足你的要求
    java core这本书里都是用这个类
      

  10.   

    RandomAccessFileReader 有readDouble()方法