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 |
#278 in Development tools
71,615 downloads per month
Used in 52 crates
(21 directly)
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
~173K SLoC