#java #properties

java-properties

A library for reading and writing Java properties files in Rust

11 releases (stable)

2.0.0 May 21, 2023
1.4.1 Mar 10, 2022
1.4.0 Jul 9, 2021
1.3.0 Oct 25, 2020
0.1.1 Feb 6, 2016

#16 in Configuration

Download history 16061/week @ 2023-11-02 13647/week @ 2023-11-09 15342/week @ 2023-11-16 13162/week @ 2023-11-23 12810/week @ 2023-11-30 17166/week @ 2023-12-07 18225/week @ 2023-12-14 8781/week @ 2023-12-21 12197/week @ 2023-12-28 17097/week @ 2024-01-04 17528/week @ 2024-01-11 20436/week @ 2024-01-18 16503/week @ 2024-01-25 16676/week @ 2024-02-01 16563/week @ 2024-02-08 13708/week @ 2024-02-15

67,377 downloads per month
Used in 39 crates (16 directly)

MIT license

53KB
1K SLoC

Java properties for Rust

This is a library for reading and writing Java properties files in Rust. The specification is taken from the Properties documentation. Where the documentation is ambiguous or incomplete, behavior is based on the behavior of java.util.Properties.

Example

use std::collections::HashMap;
use std::env::temp_dir;
use std::fs::File;
use std::io::BufReader;
use std::io::BufWriter;
use std::io::prelude::*;

let mut file_name = temp_dir();
file_name.push("java-properties-test.properties");

// Writing
let mut map1 = HashMap::new();
map1.insert("a".to_string(), "b".to_string());
let mut f = File::create(&file_name)?;
write(BufWriter::new(f), &map1)?;

// Reading
let mut f = File::open(&file_name)?;
let map2 = read(BufReader::new(f))?;
assert_eq!(src_map1, dst_map1);

lib.rs:

Utilities for reading and writing Java properties files

The specification is taken from https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html. Where the documentation is ambiguous or incomplete, behavior is based on the behavior of java.util.Properties.

Examples

use java_properties::PropertiesIter;
use java_properties::PropertiesWriter;
use java_properties::read;
use java_properties::write;
use std::collections::HashMap;
use std::env::temp_dir;
use std::fs::File;
use std::io::BufReader;
use std::io::BufWriter;
use std::io::prelude::*;

let mut file_name = temp_dir();
file_name.push("java-properties-test.properties");

// Writing simple
let mut src_map1 = HashMap::new();
src_map1.insert("a".to_string(), "b".to_string());
let mut f = File::create(&file_name)?;
write(BufWriter::new(f), &src_map1)?;

// Writing advanced
let mut src_map2 = HashMap::new();
src_map2.insert("a".to_string(), "b".to_string());
let mut f = File::create(&file_name)?;
let mut writer = PropertiesWriter::new(BufWriter::new(f));
for (k, v) in &src_map2 {
  writer.write(&k, &v)?;
}
writer.finish();

// Reading simple
let mut f2 = File::open(&file_name)?;
let dst_map1 = read(BufReader::new(f2))?;
assert_eq!(src_map1, dst_map1);

// Reading advanced
let mut f = File::open(&file_name)?;
let mut dst_map2 = HashMap::new();
PropertiesIter::new(BufReader::new(f)).read_into(|k, v| {
  dst_map2.insert(k, v);
})?;
assert_eq!(src_map2, dst_map2);

Dependencies

~6.5MB
~170K SLoC