问答详情
源自:4-4 字节流之数据输入输出流

跟着老师打出现异常了,,怎么解决?

public static void main(String[] args)throws IOException {
		String file = "demo/dos.dat";
		IOUtil.printHex(file);
		DataInputStream dis = new DataInputStream(
				new FileInputStream(file));
		int i=dis.readInt();System.out.println(i);
		i=dis.readInt();System.out.println(i);
		long l=dis.readLong();System.out.println(l);
		double d=dis.readDouble();System.out.println(d);
		String s=dis.readUTF();System.out.println(s);
		dis.close();
	}


readUTF那边有什么问题呢

怎么传不了图片啊

Exception in thread "main" java.io.EOFException

at java.io.DataInputStream.readFully(DataInputStream.java:197)

at java.io.DataInputStream.readUTF(DataInputStream.java:609)

at java.io.DataInputStream.readUTF(DataInputStream.java:564)

at com.imooc.io.DisDemo.main(DisDemo.java:20)

第20行就是上面的第10行


提问者:Juneava 2016-10-30 16:26

个回答

  • _lune
    2016-10-30 21:16:58
    已采纳

    public static void main(String args[]) throws IOException{
    String file = "demo\\dos.dat";
    
    
    DataOutputStream dos = new DataOutputStream(
    new FileOutputStream(file));
    int n = 1;long m = 2;
    String string = "去";
    dos.writeInt(n);
    dos.writeLong(m);
    dos.writeUTF(string);
    dos.close();
    
    
    
    DataInputStream dis = new DataInputStream(
    new FileInputStream(file));
    int i=dis.readInt();
    System.out.println(i);
    
    long l=dis.readLong();System.out.println(l);
    
    String s=dis.readUTF();System.out.println(s);
    dis.close();
    }

    我这个没报错,你试试

  • _lune
    2016-10-30 22:02:41

    也可以,你是先运行DataOutputStream,再运行DataInputStream的吧

  • Juneava
    2016-10-30 21:58:56

    public static void main(String[] args) throws IOException {
    		String file = "demo/dos.dat";
    		DataInputStream dis = new DataInputStream(new FileInputStream(file));
    		int i = dis.readInt();
    		System.out.println(i);
    		i = dis.readInt();
    		System.out.println(i);
    		long l = dis.readLong();
    		System.out.println(l);
    		double d = dis.readDouble();
    		System.out.println(d);
    		String s = dis.readUTF();
    		System.out.println(s);
    		dis.close();
    	}
    public static void main(String[] args) throws IOException {
    		String file = "demo/dos.dat";
    		DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
    	dos.writeInt(5);dos.writeInt(10);dos.writeLong(20l);dos.writeDouble(10.5);
    	dos.writeUTF("中国");
    	dos.close();
    	IOUtil.printHex(file);
    	}


  • _lune
    2016-10-30 21:56:08

    http://img.mukewang.com/5815fbf200019f8500530090.jpg。。。。。。。。。。。。。。。。。

  • _lune
    2016-10-30 21:50:26

    那就好,采纳吧哈哈哈哈

  • _lune
    2016-10-30 21:49:19

    莫非是因为你把文件用16进制打印了

  • _lune
    2016-10-30 21:47:44

    http://img.mukewang.com/5815f9f10001c2ef00830071.jpg我运行出来了,,,尴尬

  • Juneava
    2016-10-30 21:44:11

    public class DosDemo {
    	public static void main(String[] args) throws IOException {
    		String file = "demo/dos.dat";
    		DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
    	dos.writeInt(10);dos.writeLong(20l);dos.writeDouble(10.5);
    	dos.writeUTF("中国");
            dos.close();
    	IOUtil.printHex(file);
    	}
    public static void main(String[] args) throws IOException {
    		String file = "demo/dos.dat";
    		DataInputStream dis = new DataInputStream(new FileInputStream(file));
    		int i = dis.readInt();
    		System.out.println(i);
    		long l = dis.readLong();
    		System.out.println(l);
    		double d = dis.readDouble();
    		System.out.println(d);
    		String s = dis.readUTF();
    		System.out.println(s);
    		dis.close();
    	}


  • _lune
    2016-10-30 21:14:54

    意思应该是读到文件结尾还在读吧,确保读之前,有字符串写进去吗