java学习笔记10

(1)DataInputStream 与 DataOutputStream:

DataInputStream 与 DataOutputStream 提供了与平台无关的数据操作,通常会先通过DataOutputStream按照一定的格式输出, 再通过DataInputStream按照一定格式读入。由于可以得到 java 的各种基本类型甚至字符串,这样对得到的数据便可以方便地进行处理,这在通过协议传输的信息的网络上是非常适用的。

import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class DataStreamDemo  {
 
      
       publicstatic void main(String[] args) throws IOException{
              DataOutputStreamout =
                            newDataOutputStream(new FileOutputStream("order.txt" ));
             
              double[]prices = {18.99,9.22,14.22,5.22,4.21};
              int[] units = {10,10,20,39,40};
              String[]descs ={"t恤衫","杯子","洋娃娃","大头针","钥匙链"};
             
              for(int i = 0; i < prices.length; i++)
                {
                     out.writeDouble(prices[i] );
                     out.writeChars("\t");
                     out.writeInt(units[i] );
                     out.writeChars("\t");
                     out.writeChars(descs[i]);
                     out.writeChars("\n");
                }
              out.close();
              DataInputStreamin = new DataInputStream( new FileInputStream("order.txt") );
              doubleprice;
              intunit;
              StringBufferdesc;
              doubletotal = 0.0;
              try{
                     while(true)
                       {
                            price= in.readDouble();
                     in.readChar();
                                   unit=in.readInt();
                            in.readChar();
                            charchr;
                            desc= new StringBuffer();
                            while((chr = in.readChar() )!= '\n' )
                              {
                                   desc.append(chr);
                              }
                            System.out.println("订单信息:" +
                              "产品名称"+desc+",\t数量:"+unit+",\t价格"+price);
                        total = total+unit*price;
                       }
              }catch (EOFException  e) {
                     System.out.println("\n总共需要:"+total+"元");
              }
              in.close();
       }
 
}


(2) 合并流

采用SequenceInputStream 类,可以实现两个文件的合并操作.


代码示例:

//在编写此代码之前  需要在E盘建立三个文件 ,分别命名为 1.txt 、2.txt 、12.txt
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
 
public class sequence {
 
      
       publicstatic void main(String[] args) throws IOException{
             
              FileInputStreamin1 = null,in2 = null;
              SequenceInputStream  s= null;
              FileOutputStreamout = null;
              try{
                       File inputFile1 = new File("E:\\1.txt");
                       File inputFile2 = new File("E:\\2.txt");
                       File outputFile = newFile("E:\\12.txt");
                      
                       in1 = new FileInputStream(inputFile1);
                       in2 = new FileInputStream(inputFile2);
                      
                       s =new SequenceInputStream(in1, in2);
                       out = new FileOutputStream(outputFile);
                      
                       int c;
                       while( (c= s.read() )!= -1 )
                         {out.write(c);}
                       in1.close();
                       in2.close();
                       s.close();
                       System.out.println("ok....");
                  }catch(IOException e){
                         e.printStackTrace();
                  }
              finally
                {
                     if(in1!= null)
                            try{
                                   in1.close();
                            }catch (Exception e) {}
                     if(in2!= null)
                            try{
                                   in2.close();
                            }catch (Exception e) {}
                     if(s!= null)
                            try{
                                   s.close();
                            }catch (Exception e) {}
                     if(out!= null)
                            try{
                                   out.close();
                            }catch (Exception e) {
                            }
                }        
       }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值