【发布时间】:2015-06-16 07:59:48
【问题描述】:
我想要从文件 items.dat 中读取信息的程序,然后创建另一个名为 availableItems.dat 的文件,其中仅包含可用项目(数量大于 0)的信息(条形码、数量、价格),然后是出售所有这些物品的预期收入。预期收入可以衡量为所有商品的数量*价格之和……我这样做了,但是有 EOFException 异常我不知道为什么?
文件中的信息记录如下:
77777 5 6.7 .. .. 到6个项目
我的代码是:
import java.io.*;
class items{
public static void main(String[] args) throws IOException{
File f=new File("items.dat");
FileInputStream ff=new FileInputStream(f);
DataInputStream df=new DataInputStream(ff);
int[] barcod=new int[6];
int[] quan=new int[6];
double[] price=new double[6];
int i=0;
try{
while (i<barcod.length)
{
barcod[i]=df.readInt();
quan[i]=df.readInt();
price[i]=df.readDouble();
i++;
}
File f2=new File("availableItems.dat");
FileOutputStream ff2=new FileOutputStream(f2);
DataOutputStream dou=new DataOutputStream(ff2);
int s=0;
double sumquan=0;
double sumpri=0;
while (s<6)
{
if (quan[s]!=0)
{
dou.writeInt(barcod[s]);
dou.writeInt(quan[s]);
dou.writeDouble(price[s]);
sumpri+=price[s];
sumquan+=quan[s];
}
s++;
}
dou.writeDouble(sumpri*sumquan);
}
catch(EOFException e){
System.out.println(e);
}
finally{
df.close();
}
}
}
【问题讨论】:
-
items.dat 是用
DataOutputStream(或等效项)编写的吗? -
Java 不是 Javascript,请不要为 Java 使用 Javascript 堆栈 sn-ps。
-
从您对文件的描述来看,它看起来根本不是二进制文件。它看起来像空格分隔的数字。这是真的吗,还是只是说明性的?
-
对不起,我没有检查
-
items.dat 是二进制文件
标签: java file binary readfile writefile