JAVA基本输入输出流的几种用法(3)——以简单商品管理系统为例

JAVA基本输入输出流的几种用法(3)——以简单商品管理系统为例

DataOutputStream与DataInputStream的使用

package Commodity_System;

import java.io.*;
import java.lang.String;
import java.util.ArrayList;


/*
 * 先用DataOutputStream往文件写入商品信息
 * 再用DataInputStream从文件读入商品信息
 * 处理后用DataOutputStream输出总价
 */
public class Commodity5 {
	public static void main(String args[])throws IOException{
		String[] Name0 = new String[]{"aaa","bbb","ccc","ddd","eee","fff"};
		String[] Price0 = new String[]{"9.99","19.99","29.99","49.99","99.99","199.99"};
		String[] Number0 = new String[]{"10","15","45","24","7","51"};
		int len0 = Name0.length;
		
		DataOutputStream outp = new DataOutputStream(new FileOutputStream("Commodity.txt"));
		//使用DataOutputStream能正常写入,但会出现乱码
		int i = 0;
		for(i=0;i<len0;i++){
			outp.writeBytes(Name0[i] + " ");
			outp.writeBytes(Price0[i] + " ");
			outp.writeBytes(Number0[i]);
			if(i != len0 - 1) outp.write(new byte[]{13,10}); //换行
		}
		outp.close();
		
		DataInputStream inp = new DataInputStream(new FileInputStream("Commodity.txt"));
		BufferedReader d = new BufferedReader(new InputStreamReader(inp));
		
		ArrayList<String> Name = new ArrayList<String>();
		ArrayList<Double> Price = new ArrayList<Double>();
		ArrayList<Integer> Number = new ArrayList<Integer>();
		//注意:ArrayList类只支持对象类型,不支持 基础数据类型。
		//就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。
		
		String line;
		while((line = d.readLine()) != null){
			String[] tokens = line.split(" ");
			Name.add(tokens[0]);
			Price.add(Double.parseDouble(tokens[1]));
			Number.add(Integer.parseInt(tokens[2]));
		}
		inp.close();
		
		double cost = 0;
		int len = Name.size();
		for(i=0;i<len;i++){
			cost += Price.get(i) * Number.get(i);
		}
		String cost1 = String.valueOf(cost);
		
		DataOutputStream outp2 = new DataOutputStream(new FileOutputStream("Result.txt"));
		outp2.writeBytes(cost1);
		outp2.close();
	}
}

Commodity.txt

aaa 9.99 10
bbb 19.99 15
ccc 29.99 45
ddd 49.99 24
eee 99.99 7
fff 199.99 51

Result.txt

13848.48
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DearMrDerek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值