Java_day20

3.3.4:properties: 配置文件

  • java.util.Properties是Hashtable的子类,Properties类表示一组持久的属性。
  • Properties可以保存到流中或从流中加载。
  • 属性列表中的每个键及其对应的值都是一个字符串。  

     可以通过读取文件中内容得到properteis的key和value,通过load()方法读取文件.
     
    构造器:
            Properties() ;创建一个空的属性列表
    常用方法 :

  1. getProperty(String key);通过key获得属性值
  2. etProperty(String key ,String value); 给属性列表设置属性值和属性名
  3. ist(PrintStream out);将属性列表打印到指定的输出流
  4. oad(InputStream in);将io流中数据读取得到属性列表
  5. Set<String> = stringPropertyName();//获得所有的key

3.4:字节流:PipedInputStream/PipedOutputStream 管道输入/输出流。一般结合线程来用。
        
        问题一:管道输入/输出流,这个输入/输出是相对于谁来说。
            答    :相对于当前代码来说。
        问题二:管道输入流/输出流 怎么连接起来。
            答    :创建对象的时候用构造器传值就可以了。

3.5: 字节包装流 : BufferedInputStream/BufferedOutputStream 有缓冲区的包装流 (装饰模式)
    特点:有缓冲区的包装流效率会高一些,可以使用mark和reset功能(标记 回读 功能)
    提高效率的原因:BufferedInputStream对外提供滑动读取的功能实现,通过预先读入一整段原始输入流数据至缓冲区中,而外界对BufferedInputStream的读取操作实际上是在缓冲区上进行,如果读取的数据超过了缓冲区的范围,那么BufferedInputStream负责重新从原始输入流中载入下一截数据填充缓冲区,然后外界继续通过缓冲区进行数据读取。这样的设计的好处是:避免了大量的磁盘IO,因为原始的InputStream类实现的read是即时读取的,即每一次读取都会是一次磁盘IO操作(哪怕只读取了1个字节的数据),可想而知,如果数据量巨大,这样的磁盘消耗非常可怕。而通过缓冲区的实现,读取可以读取缓冲区中的内容,当读取超过缓冲区的内容后再进行一次磁盘IO,载入一段数据填充缓冲,那么下一次读取一般情况下就直接可以从缓冲区读取,减少了磁盘IO。
    

  • 1:构造器 new BufferedInputStream(字节流,缓冲区大小);//默认缓冲大小是8192字节
  • 2:构造器 new BufferedOutputStream(字节流,缓冲区大小);//默认缓冲大小是512字节

    
3.6: 字节包装流 : DataInputStream/DataOutputStream 读取/写出 某个类型的数据
        
      特点:可以一次写一个int/long/double 基本数据类型+String的数据流中,可以从流中一次读取一个基本数据类型的数据。      
      注意:是通过基本数据类型数据的 字节数 进行读取 ,如果a.txt中有一个字符6, 不能用readInt()去读取,因为这个6代表的字节数不是int所代表的字节数。
       推荐:使用DataInputStream读取数据,最好是读取用DataOutputStream写出去的数据。不然读取不到想要的效果。
       任务:利用DataOutputStream+ByteArrayOutputStream获得1000L所对应的字节数组。
 
3.7: 打印包装流 PrintStream  为另一个输出流添加了功能

    PrintStream ps = new PrintStream(file);
    常见用法例子:
        // 定义一些变量,用来格式化输出。  
        double d = 345.678;  
        String s = "你好!";  
        int i = 1234;  
        // "%"表示进行格式化输出,
        // "%"之后的内容为格式的定义。 
        // "f"表示格式化输出浮点数。 
        ps.printf("%f", d); //345.678000
        ps.println();  
        // "9.2"中的9表示输出的长度,2表示小数点后的位数。 注意输出数字前面的空格 
        ps.printf("%9.2f", d);//   345.68
        ps.println();  
        // "+"表示输出的数带正负号。  
        ps.printf("%+9.2f", d);//  +345.68
        ps.println();  
        // "-"表示输出的数左对齐(默认为右对齐)。  
        ps.printf("%-9.4f", d);//345.6780
        ps.println();  
        // "+-"表示输出的数带正负号且左对齐。  
        ps.printf("%+-9.3f", d);//+345.678
        ps.println();  
        // "d"表示输出十进制整数。
        ps.printf("%d", i);//1234
        ps.println();  
        // "o"表示输出八进制整数。 
        ps.printf("%o", i);//2322
        ps.println();  
        // "x"表示输出十六进制整数。  
        ps.printf("%x", i);//4d2
        ps.println();  
        // "#x"表示输出带有十六进制标志的整数。  
        ps.printf("%#x", i);//0x4d2
        ps.println();  
        // "s"表示输出字符串。
        ps.printf("%s", s);//你好! 
        ps.println();  
        ps.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s", d, i, s);
       //输出一个浮点数:345.678000,一个整数:1234,一个字符串:你好!


-------------------------------------------------------------------------------------------------------------------------------


3.8:  字符流 : CharArrayReader/CharArrayWriter:有缓冲区的字符输入/输出流.


        特点:可使用 toCharArray() 和 toString() 获取数据。 
    
3.9:  字符流 :FileReader/FileWriter 
    
       特点:每次读取的是字符,可以查看,可以操作。
    

3.10:  字符流 :

      PrintStream:和PrintWriter类似
      BufferedReader : 读取一行
      PrintWriter :写出一行


3.10: 转换流 :InputStreamReader 字节输入流转换为字符输入流:
                        OutputStreamWriter 字节输出流转换为字符输出流:
          特  点 : 将字节流转换为字符流的时候可以设置编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值