Skip to main content

Loading Java Properties Files in C#

A completely re-written, Open Source JavaProperties class is now available in Kajabity Tools and available under the Apache License, Version 2.0.

I’m working on a little personal project to write a GUI editor for some specialised data files – It’s taking longer than I hoped which is why I’ve not Posted for a while. One hurdle is that I need to use a lot of reference data which is currently available in Java style “.properties” files. This is itself a specialised Java specific file format – popular in the Java world but, unsurprisingly, not supported by C#.

I had a quick hunt around the internet and came across a couple of links suggesting very simple ways to achieve something similar (such as this one).

Unfortunately, the “.properties” format is significantly more complex than this suggests and supports a broad range of syntax elements to handle comments and non-ascii characters – and to embed spaces and equals in the keys. Take heart, C# programmers though – one Java programmer had added the line “Hong Kong = Hong Kong” in a language properties file – not realising that the property name here is “Hong” and the property value is “Kong = Hong Kong”. The correct property should be written “Hong Kong = Hong Kong” (escape the first space).

So, to ensure I didn’t have any problems if the properties files I used were anything but basic, I thought I better implement something a bit more capable. The obvious solution is to implement a C# class based on the existing Java version – so this I have done, resulting in the Kajabity.Tools.JavaProperties class (JavaProperties.cs).

Download Source ZIP (removed): The use of this software is entirely at your own risk.

This version uses C# friendly names and implements the most important features of the Java Properties class (as far as I can see) – including the Load and Store methods. It extends the System.Collections.Hashtable class and all of it’s features are available. I have improved slightly on the original and it should be more robust – for example when non-strings are added to the class I use the C# Object.ToString() to convert them to strings.

The zip also includes some sample “.properties” files to illustrate the features – and to show why a simpler parser won’t suffice.

Hope you find this useful.

Tags: , ,
Posted in C#, Java, Kajabity Tools

9 comments on “Loading Java Properties Files in C#”

  1. Yuriy says:

    The class is pretty nice but looks like there is a defect! – if I have property

    website =

    it comes to (after loading and storing file with one) –


    I believe extra backslash is redundant here. What do you think?


  2. simon says:

    Yes, you are correct – it does behave as you say.

    But so does the original Java version.

    The C# load and store code is simply a translation of the existing Java code – with a few class level changes so it should behave identically.

  3. Santosh says:

    Hi, Do I consider this code as public domain? For use in commercial software?

    1. simon says:

      It is from my point of view – but since it is based on Java code I have sent an email to Sun just to check. As soon as they reply, I will put a suitable licence on it.

  4. simon says:

    An update for both Santosh and Yuriy – the rewritten version of the JavaProperties class in Kajabity Tools v0.1 is released as Open Source (Sun never replied…) under the Apache Licence, Version 2.0 – and I have attempted to ensure it only escapes characters where necessary.

    Hope that helps.

  5. Yury says:


    JavaProperties class is gold 🙂


  6. hugo says:


    hey look I have the following problem,
    I am novice and do not take your Kajabity.Tools.Java as my request is if I can make a Escript of example only to see its structure

    hopefully I can answer my mail or in this forum


  7. polkduran says:

    the download link is not there anymore 🙁

  8. simon says:

    Yes – as I say at the top of the article, I’ve moved it.

    The new version is in Kajabity Tools – have a look at:

    The source is also available on GitHub at

Leave a Reply

Your email address will not be published. Required fields are marked *