DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
int a[]={1,3,4,62,13,35};
for (int i = 0; i < a.length; i++)
dos.writeInt(a[i]);
dos.close();
}
这样就没问题,但是如果
for (int i = 0; i < a.length; i++)
{
dos.writeInt(a[i]);
dos.close();
}
这样加了括号就有问题了,报写入错误,是为什么呢
for (int i = 0; i < a.length; i++)
dos.writeInt(a[i]);//不加括号,for循环只包含这句
dos.close(); //加了括号,这句也在for循环内了,close后再循环writeInt就报错了。
加了{}整当成一个整体为for的执行语句块,所以当你执行for循环i=0是就close了所以出错,不加{}时for后面的第一句话当成for的执行语句块
close()写在for循环外面
那没括号怎么知道循环到哪里结束呢
那没括号怎么知道循环到哪里结束呢
加括号版本:
DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
int a[]={1,3,4,62,13,35};
for (int i = 0; i < a.length; i++) {
dos.writeInt(a[i]);
dos.close();
}
第一次循环就把文件关了,你再读肯定出错。
不加括号相当于下面的版本:
DataOutputStream dos=new DataOutputStream(new FileOutputStream("D:/zpc.txt"));
int a[]={1,3,4,62,13,35};
for (int i = 0; i < a.length; i++) {
dos.writeInt(a[i]);
}
dos.close();
即文件操作完再关闭且不再对已关闭的文件进行操作,这样就不会出错。
文件操作完之后再关闭流
不加大括号,默认循环条件下一行为循环体。
如加上括号,整个括号都是循环体,加了括号后你在第一次循环的时候已经 dos.close();第二次执行循环体写文件当然报错了~~~