System.getProperty în Java

Citește proprietățile JVM-ului (versiunea Java, sistemul de operare, directorul curent); lineSeparator() dă separatorul de rând.

Sintaxă
static String getProperty(String cheie)
static String getProperty(String cheie, String implicit)
static String lineSeparator()   // Java 7

Ce face System.getProperty

Proprietățile de sistem sunt setări ale mașinii virtuale. Unele sunt puse automat: java.version, os.name, user.home, user.dir (directorul curent), file.separator. Altele le dai tu la pornire, cu java -Dnume=valoare Main, sau din cod, cu System.setProperty. getProperty(cheie) returnează null pentru o proprietate necunoscută, iar varianta cu al doilea argument returnează valoarea implicită.

System.lineSeparator() returnează separatorul de rând al sistemului: "\n" pe Linux și macOS, "\r\n" pe Windows. Este același lucru pe care îl scrie println și %n din printf.

Parametri

Parametru Descriere
cheie Numele proprietății.
implicit Valoarea returnată dacă proprietatea nu există.

Ce returnează

Valoarea proprietății ca String sau null; lineSeparator returnează un String.

Exemple

Exemplul 1: Proprietăți standard

Versiunea Java este cea folosită la generarea acestei pagini.

public class Main {
    public static void main(String[] args) {
        System.out.println("Java " + System.getProperty("java.version"));
        System.out.println("Separator de fișiere: " + System.getProperty("file.separator"));
        System.out.println("Necunoscută: " + System.getProperty("aplicatie.oras"));
        System.out.println("Cu implicit: " + System.getProperty("aplicatie.oras", "Iași"));
    }
}

Rezultat

Java 27
Separator de fișiere: /
Necunoscută: null
Cu implicit: Iași

Exemplul 2: setProperty și lineSeparator

public class Main {
    public static void main(String[] args) {
        System.setProperty("aplicatie.limba", "ro");
        System.out.println("Limba: " + System.getProperty("aplicatie.limba"));

        String sep = System.lineSeparator();
        String text = String.join(sep, "Ana", "Ion", "Maria");
        System.out.println(text);
        System.out.println("Separatorul are " + sep.length() + " caracter(e)");
    }
}

Rezultat

Limba: ro
Ana
Ion
Maria
Separatorul are 1 caracter(e)

Greșeli frecvente

  • Scrii "\n" peste tot în fișiere care vor fi deschise pe Windows cu programe vechi: rândurile pot apărea lipite. Când contează, folosește lineSeparator().
  • Confunzi proprietățile (-D, getProperty) cu variabilele de mediu (getenv): sunt două mecanisme diferite.

Comenzi înrudite

  • System.getenv: Citește variabilele de mediu ale sistemului (PATH, HOME sau setări proprii ca DB_URL); null dacă variabila nu există.
  • System: Clasa care leagă programul de sistem: ieșirea standard (out), ieșirea de erori (err), intrarea (in), timpul, variabilele și setările.
  • String.lines: Împarte șirul în rânduri și le returnează ca Stream<String>, recunoscând \n, \r și \r\n.