(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) {
}
}
}
}