Loader and writer for *.properties files
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Build Status Code Climate Coveralls RubyGems Gemnasium Inline docs

A ruby library to read and write Java properties files.


Install via Rubygems

$ gem install java-properties

... or add to your Gemfile

gem "java-properties"

Loading files

You can load a valid Java properties file from the file system using a path:

properties = JavaProperties.load("path/to/my.properties")
properties[:foo] # => "bar"

If have already the content of the properties file at hand than parse the content as:

properties = JavaProperties.parse("foo=bar")
properties[:foo] # => "bar"

Writing files

You can write any Hash-like structure as a properties file:

hash = {:foo => "bar"}
JavaProperties.write(hash, "path/to/my.properties")

Or if you want to omit the file you can receive the content directly:

hash = {:foo => "bar"}
JavaProperties.generate(hash)  # => "foo=bar"

Encodings and special chars

As Java properties files normally hold UTF-8 chars in their escaped representation this tool tries to convert them:

"ה" <=> "\u05d4"
"𪀯"  <=> "\ud868\udc2f"

The tool also escaped every '=', ' ' and ':' in the name part of a property line:

JavaProperties.generate({"i : like=strange" => "bar"}) 
# => "i\ \:\ like\=strange=bar"

Multi line and line breaks

In Java properties files a string can be multi line but line breaks have to be escaped.

Assume the following input:

my=This is a multi \
   line content with only \n one line break

The parses would read:

{:my => "This is a multi line content which only \n one line break"}

In the opposite direction line breaks will be correctly escaped but the generator will never use multi line values.


  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request


Jonas Thiel (@jonasthiel)


For more information about the properties file format have a look at the Java Plattform documenation.


This gem is released under the MIT License. See the LICENSE file for further details.