以前写数据如double类型 3.1415926,写进文件必须把这个Double类型转换成字符串写进去,这样做一是比较麻烦,二是如果数据比较长,那么占用内存空间会很大(实际上一个Double类型在内存中占用64位既8个字节)。
DataOutputStream和DataInputStream类的适用来解决这一问题,可以把这8个字节直接写入内存里面。
DataOutputStream和DataInputStream类都是处理流,既包在管道上的管道。
操作示例
import java.io.*; public class Test { public static void main(String[] args) { try { File f = new File("e:\java\aaa.txt"); DataOutputStream dos = new DataOutputStream(new FileOutputStream(f)); String strs[] = {"衬衣","手套","围巾"}; float prices[] = {98.3f,30.3f,50.5f}; int nums[] = {3,2,1}; for (int i = 0;i < strs.length;i++) { dos.writeChars(strs[i]); dos.writeChar(' '); dos.writeFloat(prices[i]); dos.writeChar(' '); dos.writeInt(nums[i]); dos.writeChar(' '); } dos.close(); DataInputStream dis = new DataInputStream(new FileInputStream(f)); char temp[]; String str; Float price = 0f; int num = 0; char c; temp = new char[100]; for(int j = 0;j < strs.length;j++){ int len = 0; while((c = dis.readChar()) != ' ') { temp[len] = c; len++; } str = new String(temp ,0,len); //dis.readChar();? price = dis.readFloat(); dis.readChar(); num = dis.readInt(); dis.readChar(); System.out.printf("商品名称: %s;价格: %5.2f;数量: %d ",str,price,num); } //dis.close();?没有close()方法? }catch(IOException e) { e.printStackTrace(); } } } /* EOFException io流意外达到文件结尾 */
java/aaa.txt文件显示如下:
运行效果: