应该用FileReader/FileWriter. Stream方式读出的是二进制流。
另外在第一个try-cach内部代码结束后应该关闭fs,ds.否则可能造成数据还没来得及写入文件,第二个try-catch就已经开始读了.

解决方案 »

  1.   

    关闭fs,ds了也不行。
    stream读出的是二进制数,可是我用String(b)来转换了
    怎么不能转换为字符串呢?
    写SOCKET程序也是用的DataInput,DataOutput
      

  2.   

    中文的编码问题,照着下面该就可以了package com.test2;
    import java.io.*;
    /**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2003</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */public class Bean5 {  public Bean5() {
      }   public static void main(String args[])
        {
        try{
                String hello="你好";
                FileOutputStream fs=new FileOutputStream("haha");
                DataOutputStream ds=new DataOutputStream(fs);
                ds.writeUTF(hello);
                ds.close();
                fs.close();
                }
        catch(Exception e){
         e.printStackTrace();
        }
        try{
                FileInputStream fs2=new FileInputStream("haha");
                DataInputStream ds2=new DataInputStream(fs2);            String hello = ds2.readUTF();
               System.out.println(hello);
        }catch(Exception e){
          e.printStackTrace();
        }  }
    }
      

  3.   

    ds.writeBytes(String s)方法会将每一个字符的高8位丢弃。如果你的字符串是半角的(比如数字),就没有问题。
      

  4.   

    我也这么写过了,是可以的
    为什么那样不行了?
    writeBytes()应该是写入"你好"在内存中的二进制数据到文件中吧,
    read()是读出文件中的二进制数据,
    然后我再用默认的编码把二进制转换成字符,怎么不对呢?
    这一系列的转换应该都是用操作系统默认的编码方式啊??
    请高手指点,谢谢!