为了账号安全,请及时绑定邮箱和手机立即绑定

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

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行


正在回答

9 回答

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();
}

我这个没报错,你试试

0 回复 有任何疑惑可以回复我~
#1

Juneava 提问者

我去掉了一个int,保留了int,long,double,string各1个,然后不报异常了,但是运行结果只有三个,第一个是10(int),下面两个是-720575940379279360和2.625059683239217E-259,这怎么回事
2016-10-30 回复 有任何疑惑可以回复我~
#2

_lune 回复 Juneava 提问者

那你写进文件的是什么数据呢,不然把你的代码发一下
2016-10-30 回复 有任何疑惑可以回复我~
#3

Juneava 提问者 回复 _lune

知道了,我把long类型里的l去掉就行了,但是老师打的时候我好像听见他说l了。。。
2016-10-30 回复 有任何疑惑可以回复我~
#4

Juneava 提问者 回复 _lune

还有一个问题就是只要连续输入两个int类型的,读取就会异常
2016-10-30 回复 有任何疑惑可以回复我~
#5

Juneava 提问者 回复 Juneava 提问者

不去l我又运行出来了
2016-10-30 回复 有任何疑惑可以回复我~
查看3条回复

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

0 回复 有任何疑惑可以回复我~
#1

Juneava 提问者

噢,我有问题我有问题,我没运行DataOutputStream,我傻了,谢谢你
2016-10-30 回复 有任何疑惑可以回复我~
#2

_lune 回复 Juneava 提问者

嗯搞懂了就好
2016-10-30 回复 有任何疑惑可以回复我~
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);
	}


0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5815fbf200019f8500530090.jpg。。。。。。。。。。。。。。。。。

0 回复 有任何疑惑可以回复我~
#1

Juneava 提问者

你运行下我的。。。麻烦你了
2016-10-30 回复 有任何疑惑可以回复我~

那就好,采纳吧哈哈哈哈

0 回复 有任何疑惑可以回复我~
#1

Juneava 提问者

你连写两个int试试
2016-10-30 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5815f9f10001c2ef00830071.jpg我运行出来了,,,尴尬

0 回复 有任何疑惑可以回复我~
#1

Juneava 提问者

我也运行出来了,,,,
2016-10-30 回复 有任何疑惑可以回复我~
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();
	}


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信