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

#355 in Development tools

Download history 16545/week @ 2024-03-14 15666/week @ 2024-03-21 11306/week @ 2024-03-28 15678/week @ 2024-04-04 14287/week @ 2024-04-11 14013/week @ 2024-04-18 14210/week @ 2024-04-25 17378/week @ 2024-05-02 13314/week @ 2024-05-09 14200/week @ 2024-05-16 14613/week @ 2024-05-23 14223/week @ 2024-05-30 14420/week @ 2024-06-06 13757/week @ 2024-06-13 12233/week @ 2024-06-20 9708/week @ 2024-06-27

52,509 downloads per month
Used in 43 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
~172K SLoC