【特殊文件---properties】

2024-08-21 02:28
文章标签 特殊 properties

本文主要是介绍【特殊文件---properties】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

properties 

1. 注释

在properties中注释是采用#号开头的方式来进行注释的

2. 编写properties文件

在properties中,一行就是一个键值对(key=value),简单的理解就是一行可以保存一个变量,键和值之间用=号隔开

记住,不用打双引号(“”)打了的话读取的时候会读取到(“”)除非你自己需要双引号
不要有重复的键,要不然后面的值会覆盖前面的值

3. 部分例子

# String
person.last-name=john
# int
person.age=112
# boolean
person.boss=false
# Date
person.birth=2019/11/12
# List<Object>
person.dogs[0].name=jj
person.dogs[0].age=111
person.dogs[1].name=tom
person.dogs[1].age=111
# Map<String, Object>
person.maps.Jack=jackc2
person.maps.Iris=yili8
# List
person.lists[0]=1
person.lists[1]=2

4. 注意事项

  • 避免重复键:在Properties文件中,每个键都应该是唯一的。如果出现重复的键,则后面的值将覆盖前面的值。
  • 编码:Properties文件默认使用ISO 8859-1(也称为Latin-1)编码。如果需要在文件中包含非ASCII字符,建议使用UTF-8编码,并在读取文件时指定正确的编码方式。
  • 文件扩展名:虽然Properties文件的扩展名不是强制的,但通常使用.properties作为文件扩展名,以便于识别和管理。

使用Properties读取属性文件里的键值对数据

构造函数

Properties()

这个构造函数用于创建一个空的Properties对象,即不包含任何键值对的集合。

Properties properties = new Properties();  
// 现在properties是一个空的Properties对象

Properties(String fileName)

这个构造函数尝试从指定的文件名加载属性列表(key 和 value 对)。

public class Main {public static void main(String[] args) throws Exception {Properties properties=new Properties();System.out.println(properties);System.out.println("---------------------------");//这里他担心你文件不存在。所以你只需要alt加enter键抛出异常就可以了。properties.load(new FileReader("E:\\code\\javese\\summerVacation\\src\\love.properties"));System.out.println(properties);}
}

常用方法

public void load(InputStream is)

通过字节输入流读取属性文件(如.properties文件)中的键值对数据。

try (FileInputStream fis = new FileInputStream("config.properties")) {  Properties properties = new Properties();  properties.load(fis);  // 处理properties中的数据  
} catch (IOException e) {  e.printStackTrace();  
}

public void load(Reader reader)

通过字符输入流读取属性文件中的键值对数据。这适用于需要处理非二进制属性文件(如使用特定字符编码的文件)的情况。

try (FileReader fr = new FileReader("config.properties");  BufferedReader br = new BufferedReader(fr)) {  Properties properties = new Properties();  properties.load(br);  // 处理properties中的数据  
} catch (IOException e) {  e.printStackTrace();  
}

public String getProperty(String key)

根据指定的键获取对应的值。如果找不到该键,则返回null

Properties properties = // 假设这里已经加载了属性文件  
String databaseUrl = properties.getProperty("database.url");  
System.out.println("Database URL: " + databaseUrl);

public Set<String> stringPropertyNames()

返回此属性列表中所有键的Set视图,其中键及其对应的值是字符串。这相当于调用了keySet()方法,但返回的是Set<String>而不是Set<Object>,因为Properties中的键和值都是字符串。

Properties properties = // 假设这里已经加载了属性文件  
Set<String> keys = properties.stringPropertyNames();  
for (String key : keys) {  System.out.println(key + ": " + properties.getProperty(key));  
}

将键值对数据写入属性文件的Properties类常用方法

setProperty(String key, String value)

这个方法用于在Properties对象中设置或更新一个键值对。它接受两个参数:key(键)和value(值),两者都是字符串类型。如果键已经存在,则该方法会替换原有的值;如果键不存在,则会在Properties对象中添加一个新的键值对。

示例代码

Properties props = new Properties();  
props.setProperty("database.url", "jdbc:mysql://localhost:3306/mydb");  
props.setProperty("username", "admin");  
// 现在props对象中包含了两个键值对

store(OutputStream os, String comments)

这个方法用于将Properties对象中的键值对写入到指定的输出流中,通常是文件输出流(FileOutputStream),从而生成一个属性文件。它接受两个参数:os(输出流)和comments(注释)。注释字符串将作为属性文件的头部注释写入文件,如果为null,则不写入注释。

示例代码

Properties props = // 假设这里已经设置了键值对  
try (FileOutputStream fos = new FileOutputStream("config.properties")) {  props.store(fos, "This is a configuration file for my application.");  // 现在config.properties文件包含了props对象中的所有键值对,以及一个头部注释  
} catch (IOException e) {  e.printStackTrace();  
}

store(Writer w, String comments)

这个方法与store(OutputStream os, String comments)类似,但它接受的是一个Writer对象而不是OutputStream。这允许你以字符为单位写入数据,这对于需要特定字符编码的属性文件特别有用。同样,它也接受一个注释字符串作为第二个参数。

示例代码

Properties props = // 假设这里已经设置了键值对  
try (FileWriter fw = new FileWriter("config_utf8.properties", StandardCharsets.UTF_8)) {  props.store(fw, "This is a UTF-8 encoded configuration file.");  // 现在config_utf8.properties文件包含了props对象中的所有键值对,以及一个头部注释,并且文件以UTF-8编码保存  
} catch (IOException e) {  e.printStackTrace();  
}

注意事项

  • 在使用store方法时,请确保你有权写入指定的文件路径,并且该文件路径是有效的。
  • 如果文件已经存在,store方法会覆盖它。如果你不想覆盖现有文件,请在写入之前进行检查。
  • 注释字符串是可选的,但如果你提供了它,它将被写入属性文件的开头,作为头部注释。
  • 当处理完文件后,确保关闭输出流或写入器,以避免资源泄露。在上面的示例中,我使用了try-with-resources语句来自动管理资源。

这篇关于【特殊文件---properties】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091854

相关文章

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

特殊JSON解析

一般的与后台交互;都会涉及到接口数据的获取;而这里的数据一般情况就是JSON 了;JSON 解析起来方便;而且数据量也较小一些;所以JSON在接口数据返回中是个很不错的选择。 下面简单说下JSON解析过程中的一些案例: 这里我用到了三方的架包:fastjson-1.1.39.jar 架包 可以在我的博客中找到下载;或者网上找下 很多的; 这里主要就是映射  关系了;这就要求:实体类的名称和

springBoot 读取properties文件

1.创建maven工程,在pom文件中添加依赖 1 <parent>2 <groupId>org.springframework.boot</groupId>3 <artifactId>spring-boot-starter-parent</artifactId>4 <version>1.5.9.RELEASE</version>5 </parent>6

git中,隐藏application.properties文件,修改不用提交了

git中,隐藏application.properties文件,修改不用提交了 A、将文件名放入 .gitignore 文件中 B、执行git命令隐藏文件         执行在ide上执行命令         a、执行隐藏命令 git rm --cached src/main/resources/application.properties          b、执行提交命

广东省特殊食品生产试题分享

1.食品污染是指在各种条件下,导致有毒有害物质进入到食物中,造成以下哪项发生转变的过程。(D) A.食品的安全性 B.食品的养分性 C.食品的感官性状 D.以上都是 2.食品污染物是指(D) A.生物性污染物 B.化学性污染物 C.物理性污染物 D.以上都是 3.关于菌落总数的表达,错误的选项是(A) A.反映食品对人体安康的危害程度 B.是食品清洁状态的标志 C.推测食品的耐保藏性 D.指1g检

批量文件编码转换用python实现的utf8转gb2312,vscode设置特殊文件的默认打开编码

批量文件编码转换用python实现的utf8转gb2312, 任意编码之间的相互转换都是可以的.改一下下面的参数即可 convert.py文件内容如下 import osimport globimport chardet#检测文件编码类型def detect_file_encoding(file_path):with open(file_path, 'rb') as f:data = f

ArcGIS Pro SDK (十三)地图创作 3 特殊图层

ArcGIS Pro SDK (十三)地图创作 3 特殊图层 文章目录 ArcGIS Pro SDK (十三)地图创作 3 特殊图层1 高程表面图层1.1 创建具有地表图层的场景1.2 创建新的高程表面1.3 将自定义高程表面设置为 Z 感知图层1.4 将高程源添加到现有高程表面图层1.5 从地图中获取高程表面图层和高程源图层1.6 查找高程表面图层1.7 移除高程表面图层1.8 从曲面获

Vue3,格式化时间的函数作为组件的方法(methods)、计算属性(computed properties)来使用

确实,在Vue3组件中,你可以将这些用于格式化时间的函数作为组件的方法(methods)来使用,或者更优雅地,作为计算属性(computed properties)来使用,特别是当你需要基于响应式数据动态地格式化时间时。 作为方法(Methods) 在Vue组件的methods对象中定义这些函数,并在模板或其他方法中调用它们。 <template> <div> <p>Formatted

Java重修笔记 第四十七天 HashTable 类、Properties 类、如何选择集合

HashTable 类 1. 存放的是键值对 K-V 2. HashTable 的键和值都不能为 null ,否则会报 NullPointerException 异常 3. HashTable 是线程安全的 4. 用法和 HashMap 一样 5. HashTable 底层有 Hashtable$Entry[]类型的数组,第一次添加初始化大小为 11 6. HashTable 每次

AUXR-特殊功能寄存器(只写)

AUXR : Auxiliary Register(只写) MnemonicAddbitB7B6B5B4B3B2B1B0Reset ValueAUXR8EHname -  -  - - - -EXTRAMALEOFFxxxx,xx00 禁止ALE信号输出(应用示例供参考,C语言):sfr AUXR = 0x8e; //声明AUXR寄存器的地址AUXR = 0x01;//ALEOFF位置1