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ștelineSeparator(). - 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.