Java--文件字节流和Properties类

一、FileInputStream/FileOutputStream

  • A:FileInputStream 读一些数据就少一些数据
    • 概念:用于文件字节数据内容读出的字节流,建立了字节流通道
    • 用法:
      • 1.构建文件对象 将文件对象传入到文件读入字节流

        File file = new File(“src/a.txt”);

        FileInputStream fis = new FileInputStream(file);

        1. 构建文件字节读入流 传入文件路径
        • 不存在,就会抛出编译时候异常

        FileInputStream fis = new FileInputStream(“src/a.txt”);

    • 方法:
      • 1.fis.read();//d读取文件中的一个字节,读取空值时候为-1

      • 2.fis.read(byte[]); //读取文件内容到字节数组中

      • 3.读取完所有的文件字节数据内容

        int da = 0;

        while ((da = fis.read())!=-1) {
        //System.out.print(da);
        }

  • 注意:
    • 1.多个线程读取文件字节 相互之间不影响
    • 2.读取文件字节流数据时候,不可以删除文件,可以修改数据内容
      • 修改数据内容:读取字节数据时候,每次读取是按照字节所在位置顺序的
      • eg:读取 “abcd” 读取ab Thread.sleep(5000); 中间修改为 " abcd" ,接着读取初来的依旧是 ab
    • 3.关闭 文件字节流资源

(二)OutputStream

  • A:OutputStream

    • 概念:文件字节内容写入流,建立了文件和写入目标的字节流通道

    • 用法:

      • 1.创建文件对象,将文件对象传给写入流,得到文件字节写入流对象

        File file = new File("a.txt");
        FileOutputStream fos = new FileOutputStream(file);
        
      • 2.直接创建文件写出流通道,传入文件路径

        • 没有文件,就会创建文件
        FileOutputStream fos2 = new FileOutputStream("abc.txt");
        
      • 3.每次写入到文件中,文件中的数据会清空,需要在文件字节流建立通道时,设置写入字节数据追加

        FileOutputStream fos = new FileOutputStream(file, true);
        
    • 方法:

      • 1.fos.write(byte); //一个字节写入到文件中
      • 2.fos.write(but, 0, but.length/2); //一个自定义长度字节数组写入到文件中
  • B:注意:

      1. 多个线程同时写字节流到同一个文件加上同步锁 防治写入字节出错
      • 2.write();//写出字节或者字节数组,需要写出字符串时候,将写入的字符串变为字节数组

        • fos.write("hello world!".getBytes());
          fos.write((Thread.currentThread().getName()+"-"+i+"\r\n").getBytes());
          
      • 3.flush();刷新缓冲区

      • 5.close();关闭资源


(三)FileInputStream和FileOutputStream一起使用时候

  • A:资源先用后关(同时写入流要刷新缓冲区)
File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(file,true);

fos.write(fis.read());

fos.flush();
fos.close();
fis.close();

二、Properties

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

    • 1.配置文件
    • 2.key = value(或者 key : value) 数据保存在 .properties
  • B:创建Properties对象

    • Properties p = new Properties();
  • C:方法:

    • 1.properties对象 加载properties文件内容

      p.load(new FileReader("src/com/briup/ch19/a.properties"));

    • 2.查看properties对象文件中key=value数据,并打印到指定位置

      p.list(System.out);//打印到控制台上

    • 3.通过key获取value

      p.getProperty("age");

    • 4.遍历properties对象的key=value

      Set<String> stringPropertyNames = p.stringPropertyNames();
      

    Iterator iterator = stringPropertyNames.iterator();
    while (iterator.hasNext()) {
    String string = (String) iterator.next();
    System.out.println(string+"="+p.getProperty(string));
    }
    ```

    • 5.向properties对象中添加key=value,不会影响properties文件内容

    p.setProperty("gender", "男");

    • 6.当前系统的配置信息
      * 7.当前系统的配置文件 的值
      //Map集合 key=value
      //uesr.dir == 当前项目

        ```java
        Properties properties = System.getProperties();
        Set<Object> keySet = properties.keySet();
        for (Object object : keySet) {
        	System.out.println(object+"=="+properties.get(object));
        }
        ```
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值