import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class Data
{
 public static void main(String args[])
 {
  try
  {
   FileOutputStream fout=new FileOutputStream("c:\\out.txt");
   DataOutputStream dfout=new DataOutputStream(fout);
   int i;
   for (i=0;i<4;i++){
     dfout.writeInt(i);
   }
  
   dfout.close();
  FileInputStream fin=new FileInputStream("c:\\out.txt");
  DataInputStream dfin=new DataInputStream(fin);
  while(dfin.read() != -1) {
     System.out.print(dfin.readInt());
  }
  dfin.close();
 }
 catch(Exception e)
 {
   System.err.println("发生异常:"+e);
   e.printStackTrace();
  }
 }
}  06553633554432发生异常:java.io.EOFException
java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:358)
at Data.main(Data.java:22)上面是程序运行出现的错误在eclipse中我的意思是想把0 1 2 3读到文件中 再读出来显示 怎么就不行呢 大家帮我看看错在哪里
我觉得就是writeInt() 和 readInt()那的问题 但是不知道怎么改

解决方案 »

  1.   

    int n = 0;
    while((n = dfin.read()) != -1) { 
        System.out.print(n); 
      

  2.   

    public class Data
    {
        public static void main(String args[])
        {
            try
            {
                FileOutputStream fout = new FileOutputStream("d:\\out.txt");
                DataOutputStream dfout = new DataOutputStream(fout);
                int i;
                for (i = 0; i < 4; i++)
                {
                    dfout.writeBytes(String.valueOf(i));
                }
                dfout.flush();            dfout.close();
                FileInputStream fin = new FileInputStream("d:\\out.txt");
                DataInputStream dfin = new DataInputStream(fin);
                int j = 0;
                while ((j = dfin.read()) != -1)
                {
                    System.out.print((char) j);
                }
                dfin.close();
            }
            catch (Exception e)
            {
                System.err.println("发生异常:" + e);
                e.printStackTrace();
            }
        }
    }
      

  3.   

    FileOutputStream 用于写入诸如图像数据之类的原始字节的流FileOutputStream fout=new FileOutputStream("c:\\out.txt"); 
    DataOutputStream dfout=new DataOutputStream(fout); 

    for (int i=0; i<4; i++){ 
    dfout.writeBytes(String.valueOf(i));  } 
    dfout.flush();
                            dfout.close();
      

  4.   

    楼上那么写我运行了结果正确
      while(dfin.read() != -1) {
         System.out.print((char)dfin.read());
      }
      dfin.close();
     }
    不过这么写为什么就不对呢
    显示的结果是:13
    为什么呢
      

  5.   

      while(dfin.read() != -1) { //这里读了一次
        System.out.print((char)dfin.read()); //这里读了第二次
      } 
      dfin.close(); 
    } 所以while括号里面读的是02
    打印那里读的是13
      

  6.   

    因为while的时候你已经读了一个了  然后你在print的时候  又读了  这样打印出来的就是间隔的了  
      

  7.   

    判断条件不要用while(dfin.read() != -1)
    最好用while(fin.available>0)来判断产生java.io.EOFException 是因为读取的文件到了末尾,文件指针还在读,所以换个判断条件