java回顾之字符流
java回顾之字符流
一、字符流输入reader
| 方法 | 说明 | 
|---|---|
| close() | 关闭流资源 | 
| read() | 读取一个字符 | 
| read(char[] chs) | 读取一个字符数组的内容 | 
1.2、FileReader类
| 说明 | |
|---|---|
| FileReader(File file) | 使用File对象的路径创建输入流 | 
| FileReader(String fileName) | 使用字符串路径创建输入流 | 
1.3、字符输出流Writer
| 方法 | 说明 | 
|---|---|
| close() | 关闭流资源 | 
| flush() | 刷新 | 
| write(int c) | 写出一个字符 | 
| write(char[] cbuf) | 写出一个字符数组的内容 | 
| write(char[] b, int off, int len) | 写出一个字符数组的一部分 | 
| write(String str) | 
1.4实现类 FileWriter类
- 
说明 FileWriter(File file) 用File对象所表示的路径创建输出流对象 FileWriter(String fileName) File字符串所表示的路径创建输出流对象 FileWriter(File file,boolean b) 用File对象所表示的路径创建输出流对象,true表示续写 FileWriter(String fileName,boolean b) File字符串所表示的路径创建输出流对象,true表示续写 
常用方法演示:
关闭和刷新
flush()方法作用是把在缓冲区中的内容刷新的文件中,刷新后可以继续使用流对象
close()方法作用是关闭流资源,在关闭之前会自动把缓冲区内容刷新到文件中
  通常写法就不调用flush方法,只要在最后调用close就可以了
	特殊情况:
		  比如要做聊天系统,每次说话对方都需要立马接受,不能最后一起刷新,所有需要使用flush方法
1.5、字节流字符流的作用
字节流能够操作任意类型,任意类型底层都是字节,比如图片,MP3, 视频
字符流专门用来操作有中文的文本(只有文本才有字符的概念)
二、IO资源的处理
2.1、JDK7前处理 不断的try。。catch
为什么要处理异常:
	  IO流的操作本身就有出错的概率,这是无法解决的。
	  以前throws的意思是如果出错就不管了,这是一个不负责的处理方式
	  现在使用try..catch的意思是如果出错了,我们就尽量把损失降到最低,开过流要关掉
例子:
	  买保险。买完保险之后一个人出事的概率并不会降低
		     当出事之后损失要降到最低。
2.2、JDK7的处理
格式:
    try(创建流对象;创建流对象){
            IO流操作
        }catch(){
    
    }               
 不需要程序员自己关流了,系统内部实现关流步骤,这种模式可以关好多,比如池子 
三、Properties类
3.1、概述
Properties叫做是属性集。其实他是Hashtable的一个子类,所以Properties也是一个双列集合。
Properties有和IO流相关的方法。
3.2、构造方法
| 方法 | 说明 | 
|---|---|
| public Properties() | 
| 方法 | 说明 | 
|---|---|
| Object setProperty(String key ,String value) | 添加键值对 | 
| String getProperty(String key) | 根据键获取值 | 
| stringPropertyNames() | 获取所有的键 | 
| load(输入流) | 把文件中的键值对数据读到集合中 | 
| store(输出流,String comments) | 
把数据保存到文件中(写出)
public class Demo03 {
    public static void main(String[] args) throws IOException {
        //创建对象
        Properties p = new Properties();
        //添加键值对
        p.setProperty("柳岩", "大鹏");
        p.setProperty("赵敏", "张无忌");
        //store()把集合中的键值对保存到文件中
        p.store(new FileWriter("day16\\aaa\\123.txt"),"....");
    }
}
把数据加载到集合里(读取)
public class Demo04 {
    public static void main(String[] args) throws IOException {
        //创建对象
        Properties p = new Properties();
        System.out.println("读取前" + p);
        //把文件中的数据读取到集合中
        p.load(new FileReader("day16\\aaa\\aaa.properties"));
        System.out.println("读取后" + p);
    }
}
这种思想,在开发中很有用,可以实现解耦合,在不修改源代码的情况下,做出修改数值的操作。
四、
能够更方便的读取文件。Properties的load方法的。
但是使用这个工具类有前提条件:
1.文件需要是properties类型
2.文件需要保存在src路径下
public class Demo05 {
    public static void main(String[] args) {
//        ResourceBundle
        //获取对象
        //参数表示文件名
        ResourceBundle bundle = ResourceBundle.getBundle("aaa");
        //根据键获取值
        String s = bundle.getString("zhangsan");
        System.out.println(s);
        String s2 = bundle.getString("liuyan");
        System.out.println(s2);
        //System.out.println(bundle);
        //ResourceBundle没有特别的好处,就代码看起来简单。但是必须满足前提条件
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号