Co to jest format pliku PROPERTIES?
Pliki z rozszerzeniem .properties są wykorzystywane przez technologię Java do przechowywania właściwości i konfigurowalnych parametrów aplikacji. Mogą również zawierać ciągi znaków służące do internacjonalizacji i lokalizacji, co czyni je standardowym formatem dla pakietów komunikatów i18n w aplikacjach Java i frameworkach takich jak Spring.
Każda linia w pliku .properties zawiera pojedynczy parametr. Każdy parametr jest przechowywany jako para ciągów znaków - pierwszy zawiera nazwę parametru (zwaną kluczem), a drugi jego wartość. Klucze i wartości są oddzielone znakiem =, : lub białym znakiem. Linie zaczynające się od # lub ! są traktowane jako komentarze i ignorowane przez parser. Końcowy ukośnik wsteczny (\\) na końcu linii kontynuuje wartość w następnej linii.
Domyślnie pliki .properties są kodowane w ISO-8859-1 (Latin-1). Znaki spoza alfabetu łacińskiego muszą być zapisywane jako sekwencje ucieczki Unicode \\uXXXX - w przeciwieństwie do plików YAML lub plików XML, które natywnie obsługują UTF-8. Java 9 wprowadziła obsługę ładowania plików .properties w UTF-8, gdy podany jest jawny zestaw znaków.
Edycja plików .properties
Pliki .properties można dowolnie modyfikować za pomocą dowolnego edytora tekstu. Dostępne są jednak również bardziej zaawansowane narzędzia do edycji plików, wyposażone w dodatkowe funkcje nieobsługiwane przez zwykłe edytory tekstu. Korzystanie z tych narzędzi umożliwia:
- walidację danych
- tworzenie nowych kluczy
- synchronizację nazw kluczy w plikach lokalizacyjnych
- automatyczną, dwukierunkową konwersję symboli spoza ASCII na i z sekwencji
\\uXXXX - integrację z Eclipse
Dodatkowe informacje
Dostęp do plików .properties w aplikacjach Java odbywa się poprzez klasę java.util.Properties. Zazwyczaj są one pakowane jako zasoby classpath wewnątrz archiwów JAR lub WAR i ładowane w czasie wykonywania - nie ma dla nich ustalonego domyślnego katalogu. Format .ini pełni podobną rolę w środowiskach innych niż Java, podczas gdy pliki .env są powszechnie używane w nowoczesnych wdrożeniach kontenerowych.
Bezpieczeństwo
RYZYKO: LOWPlik .properties jest zwykłym tekstem i nie może wykonywać kodu, więc otwarcie go jest bezpieczne. Dwie realne obawy: (1) często zawierają one sekrety - hasła do baz danych, klucze API, parametry połączenia - więc nie wklejaj ich do niezaufanych narzędzi online ani nie przesyłaj do publicznych repozytoriów. (2) Ryzyko edycji: literówka, błędne kodowanie (zapisanie UTF-8 tam, gdzie oczekiwane jest ISO-8859-1, może zniekształcić akcenty) lub zbędny znak mogą uniemożliwić uruchomienie aplikacji Java. Zawsze rób kopię zapasową oryginału przed zmianą wartości.
Szczegóły formatu
w pigułceProgramy otwierające pliki PROPERTIES
Szczegóły techniczne
specyfikacja| Domyślne kodowanie | ISO-8859-1 (Latin-1) |
| Obsługa UTF-8 | Dostępna od Java 9+ poprzez jawny argument charset w Properties.load() |
| Znaki spoza ASCII | Muszą być reprezentowane jako sekwencje ucieczki Unicode \uXXXX przy użyciu kodowania ISO-8859-1 |
| Separator klucz-wartość | =, : lub niesescapowany biały znak - pierwsze wystąpienie oddziela klucz od wartości |
| Składnia komentarzy | # lub ! na początku linii |
| Kontynuacja linii | Końcowy znak \ łączy następną linię z bieżącą wartością; wiodące białe znaki w linii kontynuacji są usuwane |
| Przycinanie białych znaków | Wiodące białe znaki przed kluczami oraz między separatorem a wartością są automatycznie usuwane |
| Zachowanie przy duplikatach kluczy | Dozwolone przez parser; ostatnia definicja po cichu nadpisuje wcześniejsze |
| Klasa Java API | java.util.Properties |
| Typ MIME | text/plain |
| Magiczne bajty / sygnatura | Brak - zwykły tekst bez nagłówka binarnego; identyfikowany przez rozszerzenie pliku i strukturę linii klucz=wartość |
| Obsługiwane sekwencje ucieczki | \n, \t, \r, \\, \ (escapowana spacja w kluczach/wartościach), \uXXXX |
| Deweloper / opiekun | Sun Microsystems / Oracle (część platformy Java) |
| Typowe wdrożenie | Pakowane jako zasoby classpath wewnątrz archiwów JAR lub WAR; ładowane w czasie wykonywania przez getResourceAsStream() |
| Adopcja w ekosystemie | Używany przez Java SE, Spring Framework, Android (legacy), Apache Ant, Maven i wiele narzędzi firm trzecich |
| Wydano | 1996 (Java 1.0, java.util.Properties) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | docs.oracle.com |
Konwersje PROPERTIES
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki PROPERTIES.