Tartalomjegyzék

< Java

Java config fájl

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.config
Program.Nev = Teszt Program
Program.Verzio = 1.0

A beállításokat beolvashatjuk egy Properties objektumba, illetve ki is írhatjuk azokat.

Program.java
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.properties
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

Program01.java
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

Program01.java
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

Program01.java
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

Program01.java
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

Program01.java
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

Program01.java
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

Program01.java
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.

Program01.java
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