Java IO流补充 - Properties - IO流框架commons-io

news2024/11/17 6:47:40

文章目录

  • IO流补充知识
    • Properties结合IO流集合
    • IO流框架

IO流补充知识

Properties结合IO流集合

我们先来认识Properties属性集对象

Properties其实就是一个Map集合,但是我们一般不会当集合使用,因为HashMap更好用。

在这里插入图片描述

Properties核心作用:

属性文件:后缀是.properties结尾的文件,里面的内容都是 key=value,后续做系统配置信息的。

Properties代表的是一个属性文件,可以把自己对象中的键值对信息存入到一个属性文件中去。

Properties结合IO流的API:

方法说明
load(InputStream inStream)从输入字节流读取属性列表(键和元素对)
load(Reader reader)从输入字符流读取属性列表(键和元素对)
store(OutputStream out, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法的格式写入输出字节流
store(Writer writer, String comments)将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式写入输出字符流
setProperty(String key, String value)保存键值对(put)
getProperty(String key)使用此属性列表中指定的键搜索属性值 (get)
stringPropertyNames()所有键的名称的集合 (keySet())

演示代码

setProperty方法和store方法演示

public static void main(String[] args) throws Exception {
    // 创建集合
    Properties properties = new Properties();

    // 使用setProperty方法把键值对信息存入到属性文件当中去
    properties.setProperty("admin", "123123");
    properties.setProperty("chen", "123456");
    properties.setProperty("abc", "123789");

    /**
        参数一: 设置数据要保存到哪个文件路径下
        参数二: 保存时的注释
     */
    properties.store(new FileOutputStream("/Users/chenyq/Documents/user.properties"), "first");
}

load方法, 将一个xxx.properties文件中的键值对加载到properties对象当中

public static void main(String[] args) throws Exception {
    // 创建一个Properties对象
    Properties properties = new Properties();
    System.out.println(properties); // {}

    /**
        load方法, 加载属性文件到该properties对象当中
        参数: 表示要加载文件的位置
     */
    properties.load(new FileInputStream("/Users/chenyq/Documents/user.properties"));
    System.out.println(properties); // {chen=123456, abc=123789, admin=123123}
}

getProperty方法, 根据key获取值, 返回字符串类型

public static void main(String[] args) throws Exception {
    Properties properties = new Properties();

    properties.load(new FileInputStream("/Users/chenyq/Documents/user.properties"));
    System.out.println(properties); // {chen=123456, abc=123789, admin=123123}


    // getProperty根据key获取值, 返回字符串类型
    String str = properties.getProperty("admin");
    System.out.println(str); // 123123
}

IO流框架

commons-io概述:

commons-io是apache开源基金组织提供的一组有关IO操作的类库,可以提高IO功能开发的效率。

commons-io工具包提供了很多有关io操作的类。有两个主要的类FileUtils, IOUtils

commons-io其实是第三方的包, 我们如果使用需要导入commons-io包, 导入步骤如下:

  1. 在官网中下载commons-io 下载链接
  2. 在项目中创建一个文件夹:lib, 将commons-io-2.6.jar文件复制到lib文件夹
  3. 在jar文件上点右键,选择 Add as Library -> 点击OK
  4. 完成上面步骤后, 就可以在类中导包使用

我们主要使用FileUtils类下面的方法(其他方法可以参考文档):

方法名说明
readFileToString(File file, String encoding)读取文件中的数据, 返回字符串
copyFile(File srcFile, File destFile)复制文件。
copyDirectoryToDirectory(File srcDir, File destDir)复制文件夹。
copyFileToDirectory(File srcDir, File destDir)复制文件到文件夹

copyFile方法演示

public static void main(String[] args) throws Exception {
    /**
        copyFile方法复制文件
        参数一: 要复制的文件
        参数二: 复制后的文件
     */
    FileUtils.copyFile(new File("/Users/chenyq/Documents/test.txt"), new File("/Users/chenyq/Documents/test2.txt"));
}

copyDirectoryToDirectory方法掩饰

public static void main(String[] args) throws Exception {
    /**
        copyDirectoryToDirectory方法复制文件夹
        参数一: 要复制的文件或文件夹
        参数二: 要复制的文件夹
     */
    FileUtils.copyDirectoryToDirectory(new File("/Users/chenyq/Documents/test"), new File("/Users/chenyq/Documents/utils"));
}

copyFileToDirectory方法复制文件到文件夹

public static void main(String[] args) throws Exception {
    /**
        copyFileToDirectory方法复制文件到文件夹
        参数一: 要复制的文件
        参数二: 要复制到的文件夹
     */
    FileUtils.copyFileToDirectory(new File("/Users/chenyq/Documents/test.txt"), new File("/Users/chenyq/Documents/utils"));
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式_行为型模式 -《观察者模式》

设计模式_行为型模式 -《观察者模式》 笔记整理自 黑马程序员Java设计模式详解, 23种Java设计模式(图解框架源码分析实战) 概述 定义 观察者模式,又被称为发布-订阅(Publish / Subscribe)模式&#xff0c…

RSA与证书

这篇文章详细讲述一下RSA与证书的相关内容。内容有点多,但都是干货。 一、RSA算法 1.1简介 RSA算法是由美国三位科学家Rivest、Shamir和Adleman于1976年提出并在1978年正式发表的公开密码算 法,其命名取自三位创始人名字的首字母缩写。该算法基于数论…

CSS 计数器

CSS 计数器 CSS 计数器可让你根据内容在文档中的位置调整其显示的外观。例如,你可以使用计数器自动为网页中的标题编号,或者更改有序列表的编号。 本质上 CSS 计数器是由 CSS 维护的变量,这些变量可能根据 CSS 规则跟踪使用次数以递增或递减…

【Git】利用 GIT 做版本控制

目录 写在前面 备份方法 效果展示 写在前面 在做项目开发时,不免需要进行版本更替或者使增加新功能等,这时很重要的环节是对版本进行备份,以便在新版本开发过程中出现问题,而当工程文件过大时,在对文件备份时需要占…

Java——多线程01(创建和启动,优先级调度,守护线程,出让/礼让线程,插队/插入线程)

目录1.多线程的创建和启动方式1.线程第一种启动方式(继承Thread类)2.多线程的第二种启动方式实现Runnable接口3.多线程的第三种启动方式实现Callable接口2.Thread多线程中的方法1.getName(), setName(),currentThread(),sleep2.Thread优先级调度方法3.守…

【手把手教你学会51单片机】数码管的动态显示

注:本文章转载自《手把手教你学习51单片机》!因转载需要原文链接,故无法选择转载! 如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小伙…

类的初始化2023018

类的初始化: 第一次使用某个类,例如Person类,系统通常会在第一次使用Person类时加载这个类并初始化这个类。在类的准备阶段,系统将会为该类的类变量分配内存空间,并指定默认初始值。当Person类初始化完成后&#xff0c…

高并发系统设计-Feed流系统设计

有两种实现方式:push和pull实现,首先讨论push模式 概念 我们在讲如何设计Feed流系统之前,先来看一下Feed流中的一些概念: Feed:Feed流中的每一条状态或者消息都是Feed,比如朋友圈中的一个状态就是一个Fe…

布隆过滤器算法

目录布隆过滤器主要有下面的参数:结论举例布隆过滤器主要有下面的参数: 1.假设数据量为n,预期的失误率为p(布隆过滤器大小和每个样本的大小无关)。 2.根据n和p,算出BloomFilter一共需要多少个bit位&#x…

【年度总结 | 2022】想干什么就去干吧,少年

🤵‍♂️ 个人主页: 计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 程序人生专栏 | 年度总结 ( 2022 ) 作者: 计算机魔术师 版本: 1.0 &#xff08…

关于性能测试需要知道的

随着各企业的业务发展、用户量以及数据量的不断增加,系统承载的压力也会随之增加,服务系统的性能好坏又严重影响企业的利益。因此,性能测试重要性与需求越来越强烈。 常见的性能测试目的 性能测试是确定系统在特定工作负载下的稳定性和响应…

JAVA 基础语法——(HelloWorld案例编写,Notepad软件的安装和使用,注释,关键字,常量,变量,计算机存储单元,数据类型,标识符,类型转换)

目录 HelloWorld案例的编写 Notepad软件的安装和使用 注释 关键字 常量 变量 计算机存储单元 数据类型概述 标识符 类型转换 HelloWorld案例的编写 首先定义一个类——–public class 类名在类定义后加上一对大括号 {}在大括号中间添加一个主(main)方法/函数——–publi…

详解Curl各参数的含义

详解Curl各参数的含义1. Introduction2. Detail2.1 参数-k2.2 参数-X2.3 参数-x2.4 参数-w %{http_code}2.5 参数-d2.6 参数-H2.7 参数-F2.8 参数-O2.9 参数-o2.10 参数-u2.11 参数-b2.12 参数-G3. Awakening1. Introduction [rootnolan ~]# curl -h Usage: curl [options...]…

如何快速部署一款小程序

小程序现在大家都不陌生,微信,qq,抖音,支付宝等等都有小程序,今天给的大家带有通用的小程序,如何快速部署两种方式:自己纯手工开发,或者找别人开发不管哪种方式,今天我带…

【数据结构与算法】选择排序

文章目录选择排序什么是选择排序?选择排序实例分析算法分析代码部分选择排序 什么是选择排序? 选择排序是一种简单直观的排序算法。 它的工作原理是:每一轮从待排序列中选取一个值最小的元素,将它和当前序列的第一个元素互换。 可…

【GD32F427开发板试用】4. ADC采集摇杆模块移动量

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:hehung 之前发帖 【GD32F427开发板试用】1. 串口实现scanf输入控制LED 【GD32F427开发板试用】2. RT-Thread标准版移植 【GD32F427开发板试用…

vue利用provide和inject做套娃组件设计

provide和inject原来用的不多,只是见人引用axios的时候在main.js里使用provide来注入 app.provide(axios, axios) 这样,在所有的vue文件里都可以使用inject来获取这个注入的axios const axios inject("axios"); 这种利用provide和inject做…

(考研湖科大教书匠计算机网络)第一章概述-第五节3:计算机网络体系结构之相关专业术语

文章目录一:实体二:协议三:服务四:协议数据单元本节对应视频 【计算机网络微课堂(有字幕无背景音乐版)】:1.6 计算机网络体系结构(4)—专用术语 注意:本节内容…

2023MyBatis精选面试题2(8道)

一. MyBatis的框架架构设计是怎么样的这张图从上往下看。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。1. 加载配置:配置来源于两个地方,一处是配置文件&#xff0…

【阅读笔记】《重构》 第一二章

第一章 重构,第一个案例 编译器不会在乎代码好不好看,都是正常运行的。但人在乎,差劲的系统很难修改,因为很难找到修改点,导致程序员很有可能犯错,从而引入bug 重构的第一步 得为即将修改的代码建立一组…