[[oktatas:programozás:java|< Java]]
====== Java config fájl ======
* **Szerző:** Sallai András
* Copyright (c) 2014, Sallai András
* Szerkesztve: 2014, 2023, 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== A beállításokról =====
A programok számára tetszőleges névvel és kiterjesztéssel létrehozhatunk beállításokat tartalmazó fájlokat. Ezek lehetnek például .config vagy .properties kiterjesztésű állományok.
===== Egyszerű példa =====
Program.Nev = Teszt Program
Program.Verzio = 1.0
A beállításokat beolvashatjuk egy Properties objektumba, illetve ki is írhatjuk azokat.
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
class Program {
public static void main(String[] argv) throws Exception {
Properties beallitasok = new Properties();
String fajlNev = "Program.config";
InputStream befolyam = new FileInputStream(fajlNev);
beallitasok.load(befolyam);
System.out.println(beallitasok.getProperty("Program.Nev"));
System.out.println(beallitasok.getProperty("Program.Verzio"));
}
}
===== Beállítás létezik-e =====
Database.Type = sqlite
import java.util.Properties;
//...
Properties properties = new Properties();
String fileName = "database.properties";
InputStream inputStream = new FileInputStream(fileName);
properties.load(inputStream);
if(properties.getProperty("Database.Type") == null) {
System.out.println("Hiba! Nincs megadva az adatbázis típusa!");
return;
}
A példában nincs kezelve a kivétel.
===== Beállítások fájlba írása/olvasása =====
==== Kiírás ====
import java.util.Properties;
import java.io.FileOutputStream;
import java.io.IOException;
class Program01 {
public static void main(String args[]) {
Properties pro = new Properties();
pro.setProperty("Első", "Nagy Lajos");
pro.setProperty("Második", "Kerek Béla");
try {
pro.store(new FileOutputStream("config.properties"), null);
}catch(IOException e) {
System.err.println("Hiba a kiírás során!");
}
}
}
A null helyére String típusú megjegyzést írhatok.
==== Beolvasás ====
import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;
class Program01 {
public static void main(String args[]) {
Properties pro = new Properties();
try {
pro.load(new FileInputStream("config.properties"));
System.out.println(pro.getProperty("Első"));
System.out.println(pro.getProperty("Második"));
}catch(IOException e) {
System.err.println("Hiba a betöltés során!");
}
}
}
===== Osztállyal azonos útvonalról =====
==== Olvasás ====
import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;
class Program01 {
public static void main(String args[]) {
Properties pro = new Properties();
try {
pro.load(Program02.class.getClassLoader()
.getResourceAsStream("config.properties"));
System.out.println(pro.getProperty("Első"));
System.out.println(pro.getProperty("Második"));
}catch(IOException e) {
System.err.println("Hiba a betöltés során!");
}
}
}
==== Olvasás példányosítás esetén ====
import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;
class Program01
{
public static void main(String args[])
{
Options op = new Options();
op.oLoad();
}
}
class Options
{
public void oLoad()
{
Properties pro = new Properties();
try
{
pro.load(getClass().getClassLoader().getResourceAsStream("config.properties"));
System.out.println(pro.getProperty("Első"));
System.out.println(pro.getProperty("Második"));
}catch(IOException e)
{
System.err.println("Hiba a betöltés során!");
}
}
}
===== UTF-8 használata =====
==== UTF-8 kiírása ====
import java.util.Properties;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.OutputStreamWriter;
class Program05
{
public static void main(String args[])
{
Properties pro = new Properties();
pro.setProperty("Első", "Nagy Lajos");
pro.setProperty("Második", "Kerek Béla");
try
{
FileOutputStream f = new FileOutputStream("config.properties");
OutputStreamWriter o = new OutputStreamWriter(f, "UTF-8");
Writer out = new BufferedWriter(o);
pro.store(out, null);
}catch(IOException e)
{
System.err.println("Hiba a kiírás során!");
}
}
}
==== UTF-8 olvasása ====
import java.util.Properties;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Program06
{
public static void main(String args[])
{
Properties pro = new Properties();
try
{
FileInputStream f = new FileInputStream("config.properties");
InputStreamReader i = new InputStreamReader(f, "UTF-8");
Reader in = new BufferedReader(i);
pro.load(in);
System.out.println(pro.getProperty("Első"));
System.out.println(pro.getProperty("Második"));
}catch(IOException e)
{
System.err.println("Hiba a betöltés során!");
}
}
}
==== Kódolás ellenőrzése ====
import java.util.Properties;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
class Program05
{
public static void main(String args[])
{
Properties pro = new Properties();
pro.setProperty("Első", "Nagy Lajos");
pro.setProperty("Második", "Kerek Béla");
try
{
FileOutputStream f = new FileOutputStream("config.properties");
OutputStreamWriter o = new OutputStreamWriter(f, "UTF-8");
Writer out = new BufferedWriter(o);
pro.store(out, null);
}catch(UnsupportedEncodingException e)
{
System.err.println("Hibás kódolás!");
}catch(IOException e)
{
System.err.println("Hiba a kiírás során!");
}
}
}
===== Properties és ResourceBundle =====
A properties és a ResourceBundle használható együtt. A ResourceBunle viszont
arra való, hogy nyelvfüggő beállításokat tároljunk.
import java.util.ResourceBundle;
import java.util.Properties;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
class Program01 {
public static void main(String[] args)
throws FileNotFoundException, IOException {
ResourceBundle rb = ResourceBundle.getBundle("Program01");
System.out.println(rb.getString("Program.Verzio"));
Properties p = new Properties();
InputStream fin = new FileInputStream("Program01.config");
p.load(fin);
System.out.println(p.getProperty("Program.Verzio"));
}
}
===== Linkek =====
* http://docs.oracle.com/javase/6/docs/api/index.html?java/util/Properties.html
* http://docs.oracle.com/javase/7/docs/api/index.html?java/util/Properties.html
* http://docs.oracle.com/javase/8/docs/api/index.html?java/util/Properties.html
* https://docs.oracle.com/en/java/javase/17/docs/api/index.html?java/util/Properties.html