Java properties files are just simple text files that are widely used in Java to store different properties which should not be hard coded in java source files. By convention, properties files should have the .properties extension. They have a simple structure, each line defining a key/value pair. It is also possible to define larger text values on multiple lines. The main benefit of the properties files is the one that they can be easily edited by hand using any text editor.
Java properties files can be stored in
There are several options to handle the Java properties files:
The properties files can be stored in the classpath. This way they can be put inside jar files and it’s really useful for web applications when the absolute location of the properties files is not known. When I tested this in an web application it didn’t work:
Properties properties = new Properties() ;
URL url = ClassLoader.getSystemResource("test.properties");
properties.load(new FileInputStream(new File(url.getFile())));
The following example works to load the properties files in a web application. This snippet was tested on Tomcat 5.5. The ‘/’ represents the root of the class path. Otherwise the properties file location is considered relatively to “this” class (or to MyClass for the second example):
Properties properties = new Properties() ;
properties.load(this.getClass().getResourceAsStream("/seoimproved.properties"));
Similar example to use in a static context:
Properties properties = new Properties() ;
properties.load(MyClass.class.getResourceAsStream("/seoimproved.properties"));
The properties files can be loaded from any location.
Properties properties = new Properties() ;
properties.load(new FileInputStream("C:\\tmp\\test.properties"));
15 Responses
Franklin
24|Oct|2008 1What do you mean by “the root of the class path”? Do you mean the default package location? WEB-INF/src (or WEB-INF/classes)?
admin
25|Oct|2008 2yes. I don’t have the src folder in WEB-INF. When the aplication is deployed the java files are compiled in WEB-INF/classes and the resources are simply copied there.
So I put the properties files directly in the src folder.
stefano
27|Nov|2008 3and how to write a properties in classpath?
i can read but not wite.. thanks
admin
27|Nov|2008 4Actually is not possible to write properties files in classpath, because the properties are picked up by jvm and they are read as resources. It’s the JVM to control when they are loaded and once loaded they are reloaded. In less words, it’s not possible as I know.
Of course you can modify the files, but not using them as classpath resources, and you can not use the reading methods I described earlier;l sorry for the misleading title.
Initially I intended to put all the read/write methods for property files but I ended putting only those I’m using.
nagarajan
30|Sep|2009 5finding the path of the property file in web application is explained very well.Thanks!
ranganath
09|Dec|2009 6read worth.
ravil
10|Dec|2009 7Thanks a lot for your brief instructions. The are very helpful!!
John, the Fisherman
10|Jan|2010 8Saved my day! I was having problems trying to load the file using a relative path in my web app. Also, I did not remeber the existence of the Properties class.
Sandeep
02|Feb|2010 9Thank you very much,it helped me a lot
Kovid
02|Mar|2010 10I don’t understand this. How do I create a .properties file?
Its not making sense to me. Thanks in advance,
Kovid
Nischal Shetty
12|Apr|2010 11Phew! that helped me, thnks a lot
LATESH
04|May|2010 12import java.io.*;
import java.util.*;
public class WriteProperty{
String str, key, val;
public static void main(String[] args) {
WriteProperty w = new WriteProperty();
}
public WriteProperty(){
try{
int check=0;
while(check == 0){
check=1;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“Enter file name which has properties extension:”);
str = bf.readLine();
Properties pro = new Properties();
File f = new File(str + “.properties”);
if(!f.exists()){
check=0;
System.out.println(“File not found!”);
}
else{
FileInputStream in = new FileInputStream(f);
pro.load(in);
System.out.print(“Enter Key : “);
key = bf.readLine();
System.out.print(“Enter Value : “);
val = bf.readLine();
pro.setProperty(key, val);
pro.store(new FileOutputStream(str + “.properties”),null);
System.out.println(“Operation completly successfuly!”);
}
}
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
}
Ciaran
06|May|2010 13After I load the properties from the classpath I’m getting the BOM characters  appended to the start – meaning when I try and use getProperty() for my first property I get null returned – any ideas what I’m doing wrong here??
Dev
16|Jun|2010 14Thanks for the sort and sweet solution.
Pramila
19|Jul|2010 15Helped me a lot to fix the problem I had. THX
Leave a reply
Search
Books I Recommend
Categories
Blogroll
Recent Posts
Recent Comments
Tags
A design creation of Design Disease
Copyright © 2007 - FactoryPattern.com - is proudly powered by WordPress.
InSense 1.0 Theme by Design Disease