java 文件操作 写入和读取(小结一)
参考了这篇博客并优化,谢谢:http://blog.sina.com.cn/s/blog_99201d890101b4le.html
功能: 实现通过两个类完成先写入文件,再读取数据计算显示
package com.swust; import java.io.*; /* * 数据流包括DataInputStream、DataOutputStream类, * 两个类的实例化完成流的操作 */ public class flowTest { public static void main(String[] args)throws IOException { // TODO Auto-generated method stub String username = "1"; String path = "C:/test/" + username; String inforTxt = "msg.db"; String newPath=path+inforTxt; FileOutputStream fileOut = new FileOutputStream(newPath); DataOutputStream out = new DataOutputStream(fileOut); //定义要保存的数据数组 double[] prices={19.90,12.56,18.90,14.99,20.00};//长度5 int[] amount={3,4,5,6,7,8}; String[] descs={"java ee","java se","oracle","sqlserver","android"}; //将prices,amount及descs中的数据以Tab键为分割保存到文件中。 for(int i=0;i<5;i++){ out.writeDouble(prices[i]); out.writeChar('\t'); out.writeInt(amount[i]); out.writeChar('\t'); out.writeUTF(descs[i]); out.writeChar('\t'); } out.close(); //创建的数据输入流,将上面保存的文件再次打开并读取 FileInputStream fileIn = new FileInputStream(newPath); DataInputStream in=new DataInputStream(fileIn); double price; int amnt; String desc; double total=0.0; for(int i=0;i<5;i++){ price=in.readDouble(); in.readChar();//扔掉tab amnt=in.readInt(); in.readChar(); desc=in.readUTF(); in.readChar(); System.out.println("你订购了 "+amnt+"件 "+desc+",价格为 "+price); total=total+amnt*price; } System.out.println("共计金额:"+total+"元"); in.close(); } }
运行效果:
你订购了 3件 java ee,价格为 19.9
你订购了 4件 java se,价格为 12.56
你订购了 5件 oracle,价格为 18.9
你订购了 6件 sqlserver,价格为 14.99
你订购了 7件 android,价格为 20.0
共计金额:434.38元