Mam listę par klucz / wartość wartości konfiguracyjnych, które chcę przechowywać jako pliki właściwości Java, a następnie ładować i iterować.
Pytania:
- Czy muszę przechowywać plik w tym samym pakiecie co klasa, która je załaduje, czy może jest jakieś konkretne miejsce, w którym powinien zostać umieszczony?
- Czy plik musi kończyć się konkretnym rozszerzeniem, czy jest w
.txt
porządku? - Jak mogę załadować plik do kodu?
- Jak mogę iterować wartości w środku?
java
properties
Kliknij opcję Upvote
źródło
źródło
null
. Zobacz Javadocproperties.load(PropertiesReader.class.getResourceAsStream("/properties.properties"));
to jestgetResourceAsStream
kontraFileInputStream
? plusy i minusy?Ty można zapisać do pliku w dowolnym miejscu. Jeśli chcesz zachować go w pliku jar, będziesz chciał go użyć
Class.getResourceAsStream()
lubClassLoader.getResourceAsStream()
uzyskać do niego dostęp. Jeśli jest w systemie plików, jest to nieco łatwiejsze.Każde rozszerzenie jest w porządku, chociaż .properties jest bardziej powszechne z mojego doświadczenia
Załaduj plik, używając
Properties.load
, przechodząc w sposóbInputStream
lubStreamReader
jeśli używasz Java 6. (Jeśli są za pomocą Java 6, ja pewnie używać UTF-8, aReader
zamiast domyślnego kodowania ISO-8859-1 dla strumienia. )Iteruj przez to tak, jak iterujesz przez normalny
Hashtable
(któryProperties
pochodzi od), npkeySet()
. Używając . Alternatywnie możesz użyć wyliczenia zwróconego przezpropertyNames()
.źródło
Jeśli umieścisz plik właściwości w tym samym pakiecie co klasa Foo, możesz go łatwo załadować
Biorąc pod uwagę, że Właściwości rozszerza Hashtable, możesz iterować wartości w taki sam sposób, jak w Hashtable.
Jeśli używasz rozszerzenia * .properties, możesz uzyskać obsługę edytora, np. Eclipse ma edytor plików właściwości.
źródło
Istnieje wiele sposobów tworzenia i odczytywania
properties
plików:.properties
rozszerzenie, jednak możesz wybrać własne.java.util
opakowaniu =>Properties
,ListResourceBundle
,ResourceBundle
zajęcia.Properties
lubjava.lang.System
klasy.ResourceBundle
klasa:Properties
klasa:źródło
.properties
tylko rozszerzenia? co jest nie tak z rozszerzeniem „.txt”? proszę mi pomóc.Spowoduje to załadowanie pliku właściwości:
Używam, aby umieścić plik .properties w katalogu, w którym mam wszystkie pliki konfiguracyjne, nie łączę go z klasą, która ma do niego dostęp, ale tutaj nie ma żadnych ograniczeń.
Na imię ... używam .properties ze względu na gadatliwość, nie sądzę, że powinieneś nazywać go .properties, jeśli nie chcesz.
źródło
Przykład:
źródło
Właściwości stały się dziedzictwem. Klasa preferencji jest lepsza od właściwości.
W przeciwieństwie do właściwości, które są parami klucz-wartość opartymi na łańcuchach,
Preferences
klasa ma kilka metod używanych do pobierania i umieszczania prymitywnych danych w magazynie danych Preferencje. Możemy korzystać tylko z następujących rodzajów danych:Aby załadować plik właściwości, możesz podać ścieżkę bezwzględną lub użyć,
getResourceAsStream()
jeśli plik właściwości znajduje się w ścieżce klasy.plik XML:
Zapoznaj się z tym artykułem na temat wnętrza sklepu preferencji
źródło
W celu:
źródło
2. no extension is necessary
, Czy możesz podać mi wszelkie odniesienia do tego oświadczenia, proszę. Mam co do tego zamieszanie.Domyślnie Java otwiera go w katalogu roboczym aplikacji (takie zachowanie faktycznie zależy od używanego systemu operacyjnego). Aby załadować plik, wykonaj:
Jako takie, do pliku właściwości można użyć dowolnego rozszerzenia pliku. Ponadto plik można również przechowywać w dowolnym miejscu, o ile można użyć pliku
FileInputStream
.W pokrewnej uwadze, jeśli używasz nowoczesnego frameworka, frameworka może zapewnić dodatkowe sposoby otwierania pliku właściwości. Na przykład Spring zapewnia
ClassPathResource
ładowanie pliku właściwości przy użyciu nazwy pakietu z pliku JAR.Jeśli chodzi o iterację po właściwościach, po załadowaniu właściwości są one przechowywane w
java.util.Properties
obiekcie, który oferuje tępropertyNames()
metodę.źródło
Odczytywanie pliku właściwości i ładowanie jego zawartości do
Properties
Poniżej przedstawiono skuteczny sposób na iterację po
Properties
źródło
W Javie 8, aby uzyskać wszystkie swoje właściwości
źródło
1) Dobrze jest mieć plik właściwości w ścieżce klasy, ale możesz go umieścić w dowolnym miejscu w projekcie.
Poniżej znajduje się sposób ładowania pliku właściwości ze ścieżki klasy i odczytywania wszystkich właściwości.
2) Pliki właściwości mają rozszerzenie jako .properties
źródło
Oto inny sposób na iterację właściwości:
źródło
Pisałem o tej strukturze własności z ostatniego roku. Zapewni wiele sposobów ładowania właściwości, a także silnego ich typowania.
Zajrzyj na http://sourceforge.net/projects/jhpropertiestyp/
JHPropertiesTyped nada deweloperowi silnie typowane właściwości. Łatwa do zintegrowania z istniejącymi projektami. Obsługiwane przez dużą serię dla typów nieruchomości. Daje możliwość inicjowania właściwości w jednym wierszu za pośrednictwem implementacji IO właściwości. Daje deweloperowi możliwość tworzenia własnych typów i właściwości nieruchomości. Dostępne jest również demo internetowe, powyższe zrzuty ekranu. Posiadaj również standardową implementację interfejsu WWW do zarządzania właściwościami, jeśli zdecydujesz się z niego korzystać.
Pełna dokumentacja, samouczek, javadoc, FAQ itp. Jest dostępna na stronie projektu.
źródło
Tutaj gotowa klasa statyczna
Oto próbka:
źródło
Plik właściwości można załadować w następujący sposób:
Następnie możesz iterować mapę, używając wyrażenia lambda, takiego jak:
źródło
moim zdaniem inne sposoby są przestarzałe, kiedy możemy to zrobić bardzo prosto, jak poniżej:
to takie proste, ale myślę, że to najlepszy sposób !! Cieszyć się
źródło