zoukankan      html  css  js  c++  java
  • java学习笔记 处理流之数据流

    以前写数据如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流意外达到文件结尾
    */
    View Code

    java/aaa.txt文件显示如下:

    r1

    运行效果:

    r2

  • 相关阅读:
    初学版本控制更新Version control
    关于函数式编程(Functional Programming)
    Annotation
    Container 、Injection
    Build Tools
    Version Control
    URL和URI的区别
    函数式编程语言
    HTTP协议的简单解析
    Windows10安装MySQL8.0
  • 原文地址:https://www.cnblogs.com/yhwsy/p/5768639.html
Copyright © 2011-2022 走看看