java读取文件——以自动贩卖机为例
上一篇做自动售卖机时用的是初始化定义商品列表,但实际上每一次启动售货机时售货机显示的是上一次购买结束后的库存。
我们用一个.txt记录一下库存,然后利用File类将数据读取出来展示。
我这里设置了一个商品就为一行,名称占12个字节,价格是4个字节,数量是11个字节,再加上转行符
读取文件后利用substring(a, b)函数提取出每个商品,然后根据自己定义的字节去截取每个属性。
public void initProduct() throws IOException {
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("D:\\myjsp\\myServer\\src\\mddd\\product.txt");
InputStreamReader reader = new InputStreamReader(fileInputStream, "UTF-8");
StringBuffer sb = new StringBuffer();
while (reader.ready()) {
sb.append((char) reader.read());
}
String[] str=new String[7];
int a=0;
int b=27;
for(int i=0;i<6;i++){
str[i]=sb.toString().substring(a, b);
a=b+2;
b=a+27;
System.out.println(str[i]);
}
q.data=null;
q.next=null;
head=q;
for(int i=0;i<6;i++){
String name=str[i].toString().substring(0,12);
String price=str[i].toString().substring(12,26);
String num=str[i].toString().substring(26,27);
int ID=i+1;
product x=new product();
x.setID(ID);
x.setName(name);
x.setPrice(Integer.parseInt(price));
x.setNumber(Integer.parseInt(num));
Node p=new Node();
p.data=x;
p.next=null;
q.next=p;
q=p;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null)
fileInputStream.close();
}
}