INI Tartalomjegyzék Formátum Példa INI fájlok feldolgozása Alternatívák Jegyzetek Források További információk Navigációs menüellenőrizveGetPrivateProfileStringconfigparserparse_ini_fileinifileQSettingsGetPrivateProfileString functionApache Documentation for org.apache.commons.configuration.HierarchicalINIConfigurationArchiválvaINI-értelmező C++ nyelvenINI-értelmező Objective-C nyelvenINI-értelmező Python nyelvenINI-értelmező és -generáló Common LispbenINI-értelemző tutorial Java nyelvenAz INI fájl Cloanto-implementációjaAz INI fájl Nickel-implementációja
Fájlformátumok
platformonszöveges állománykulcs-érték párokatMS-DOSWindowsWindows MEregistrytXMLLinuxUnixpontosvesszőkettőskeresztwhitespaceGetPrivateProfileStringsztringetCa fenti INI példafájlbólPythonconfigparserPHPparse_ini_fileRubyinifilegemC++QtQSettingsosztályonXMLJSONYMLSQLite
INI
Ugrás a navigációhoz
Ugrás a kereséshez
Az INI fájlformátum különböző számítógépes platformon elterjedt formátuma a konfigurációs fájloknak.
Az INI egyszerű szöveges állomány, mely szekciókra osztott kulcs-érték párokat tartalmaz.
Az MS-DOS és a 16 bites korai Windows rendszerektől egészen a Windows ME verzióig az INI fájlformátum volt a rendszer, a driverek, boot, stb. elsődleges konfigurációs háttere. Az alkalmazások körében is az INI volt a legnépszerűbb az egyedi beállítások tárolásánál.
A Microsoft a Windows NT-vel vezette be a registryt, amely már nem szövegesen tárolja a rendszer, a felhasználók és az alkalmazások konfigurációit. A későbbi Windows rendszerek szintén a registryt használják, de a .NET-re épülő alkalmazások körében gyakoriak az XML alapú megoldások is.
Az „INI fájl” elnevezés a leggyakrabban alkalmazott kiterjeszésből (.INI
) származik, ami az „initialization”, vagy „inicializáció” rövidítése. Elterjedt kiterjesztések még a .CFG
, .conf
és a .txt
.
A Linux (és más Unix) rendszerek, illetve a platform-független szoftverek szintén használják a konfigurációiknál. Szövegesen olvasható, géppel is könnyen értelmezhető, ami nagyban hozzájárult a széles körű elterjedéséhez.
Tartalomjegyzék
1 Formátum
1.1 Tulajdonságok (property)
1.2 Szekciók (section)
1.3 Nagybetű, kisbetű
1.4 Kommentek
1.5 Egyéb változatok
1.5.1 Üres sorok
1.5.2 Kommentek
1.5.3 Azonos kulcsnevek
1.5.4 Escape karakterek
1.5.5 Globális tulajdonságok
1.5.6 Hierarchia
1.5.7 Kulcs-érték elválasztó
1.5.8 Whitespace
2 Példa
3 INI fájlok feldolgozása
4 Alternatívák
5 Jegyzetek
6 Források
7 További információk
Formátum
Tulajdonságok (property)
Az INI fájlok alapelemei a tulajdonságok vagy propertyk. minden tulajdonság egy kulcs és egy érték rendezett párjából áll, egyenlőségjellel (=
) elválasztva.
kulcs=érték
Szekciók (section)
A tulajdonságokat szabadon lehet ún. szekciókba csoportosítani. A szekciók neve tetszőleges lehet, szögletes zárójelek közé kell egy sorba írni ([
és ]
). Minden ez után leírt tulajdonság az adott szekcióhoz tartozik. A szekció végét implicit módon a következő szekció megadása jelzi, minthogy nincs explicit szekció vége jel, ugyanis az INI-ben nem lehet a szekciókat egymásba ágyazni.
[szekciónév]
a=1
b=2
Nagybetű, kisbetű
A Windows implementációja nem tesz különbséget a nagy- és kisbetűk között.[1]
Kommentek
A sor elejére írt pontosvessző (;
) kommentet jelöl, az értelmező figyelmen kívül hagyja a sort.
; comment text
Egyéb változatok
Az INI formátum nincs pontosan definiálva, nincs szabványa. Számos program, vagy INI értelmező szabadon kezelheti az egyes nyelvi elemeket.
Üres sorok
Kezdetleges INI-feldolgozóknál előfordulhat, hogy nem engedélyezettek az üres sorok. Egy sor vagy szekciódefiníció, vagy tulajdonság, vagy komment kell, hogy legyen.
Kommentek
Létezik olyan megvalósítás, ahol a sor-kommentet a szriptnyelvekhez hasonlóan a kettőskereszt (#
) jelöli.
Egyes implementációkban a komment bárhol kezdőthet egy sorban, ahol a pontosvessző jelöli. Máshol (pl. a Windows GetPrivateProfileString rendszerhívása) az egész sornak kommentnek kell lennie.
Azonos kulcsnevek
A legtöbb megvalósítás nem engedi meg, hogy egy szekción belül egy kulcsnév többször előforduljon. A második előfordulás vagy az értelmezés megszakítását, vagy a tulajdonság figyelmen kívül hagyását, vagy az előző előfordulás felülírását eredményezheti. Néhány program megengedheti a névismélődést, ún. multi-valued properties formájában.
Escape karakterek
Az escape karaktereket legelterjedtebben a visszaper () karakterrel használhatjuk.
Szekvencia | Jelentés |
---|---|
\ | (egyszerű visszaper, escape-eli az escape karaktert) |
| Null karakter |
a | Bell/Rendszercsengő |
b | Backspace/visszatörlés, ritkán Bell karakter |
t | Tabulátor |
r | Kocsi vissza |
n | Újsor karakter |
; | Pontosvessző |
# | Kettőskereszt |
= | Egyenlőségjel |
: | Kettőspont |
x???? | Unicode karakter hexadecimálisan megadva (????) |
Globális tulajdonságok
Opcionálisan globális tulajdonságok is értelmezhetőek, ha a szekciódefiníciók előtt lettek deklarálva.[2]
Hierarchia
Habár az INI formátum nem hierarchikus, bizonyos névkonvenciók alkalmazásával lehet a szekciók között látszólagos hierarchiát alkalmazni. Ha az A
szekció része a B
alszekció, melynek része a C
al-alszekció, akkor például a [A.B.C]
szekciómegjelöléssel ez a hiányzó funkció helyettesíthető (ezt alklamazza pl. a Windows xstart.ini
állománya). Használatos még a [ABC]
és a [A]
szekció, B,C,P = V
kulcs-érték pár konvenció is.
Nincs rá szabvány, így nem egyértelmű, hogy egy adott modul, amelyik ezen megközelítések valamelyikét alkalmazza, az alkalmazásfejlesztőre bízza az álhierarchia ilyen jellegű megvalósítását, vagy saját maga, a névkonvenciók alapján eleve egy hierarchikus hozzáférést biztosít a tárolt tulajdonságokhoz.
Kulcs-érték elválasztó
Néhány implementáció kettőspontot (:
) használ kulcs-érték elválasztónak (az egyenlőségjel helyett).
Whitespace
A whitespace értelmezése különböző. A legtöbb modul figyelmen kívül hagyja az elválasztó karakter körüli szóközöket, némely még az értékeken belül is (ilyen esetben például a „host name” és a „hostname” jelentése megegyezik). De előfordulhat, hogy egy feldolgozó minden karaktert figyelembe vesz az egyenlőségjeltől a sorvégéig.
Példa
A következő fiktív példa két szekciót tartalmaz: az első a szoftver felhasználójának adatait, a második pedig a használt adatbázis-kapcsolatot. A kommentek az utolsó módosítást, illetve a szervereléréshez szóló javaslatot tartalmazzák.
; last modified 1 April 2001 by John Doe
[owner]
name=John Doe
organization=Acme Widgets Inc.
[database]
; use IP address in case network name resolution is not working
server=192.0.2.62
port=143
file="payroll.dat"
INI fájlok feldolgozása
A Windows Profile APIján keresztül lehetőséget ad INI fájlok írására és olvasására. Például a GetPrivateProfileString függvény a megadott INI fájl megadott szekciójából egy sztringet (karakterláncot) ad vissza.
A következő C program azt mutatja be, hogy hogyan lehet sztringet, illetve egész számot kiolvasni a fenti INI példafájlból:
#include <windows.h>
int main(int argc, _TCHAR *argv[])
_TCHAR dbserver[1000];
int dbport;
GetPrivateProfileString("database", "server", "127.0.0.1", dbserver, sizeof(dbserver),
".\dbsettings.ini");
dbport = GetPrivateProfileInt("database", "port", 143, ".\dbsettings.ini");
// N.B. WritePrivateProfileInt() does not exist
return 0;
A Python standard könyvtárának configparser modulja, a PHP parse_ini_file függvénye, a Ruby környezetben pedig a inifile gem végzi az INI fájlok feldolgozását.
A C++ nyelvhez többek közt a Qt library nyújt platformfüggetlen INI-feldolgozást a QSettings osztályon keresztül.
QSettings settings("dbsettings.ini", QSettings::IniFormat);
settings.beginGroup("database");
settings.setValue("server", "192.0.2.62");
settings.endGroup();
Alternatívák
Konfiguráció tárolására a Windows a registryt javasolja, de ezen kívül más leírónyelvek, mint pl. az XML, JSON, YML, vagy egyszerű adatbázisok, mint az SQLite is használhatóak.
Jegyzetek
↑ GetPrivateProfileString function. Microsoft Developer Network. Microsoft. (Hozzáférés: 2012. június 2.)
↑ Apache Documentation for org.apache.commons.configuration.HierarchicalINIConfiguration Archiválva 2012. november 12-i dátummal a Wayback Machine-ben, The Apache Software Foundation
Források
Ez a szócikk részben vagy egészben az INI file című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel.
További információk
- INI-értelmező C++ nyelven
- INI-értelmező Objective-C nyelven
- INI-értelmező Python nyelven
- INI-értelmező és -generáló Common Lispben
- INI-értelemző tutorial Java nyelven
- Az INI fájl Cloanto-implementációja
- Az INI fájl Nickel-implementációja
Kategória:
- Fájlformátumok
(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.104","walltime":"0.801","ppvisitednodes":"value":655,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":4993,"limit":2097152,"templateargumentsize":"value":822,"limit":2097152,"expansiondepth":"value":9,"limit":40,"expensivefunctioncount":"value":1,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":5689,"limit":5000000,"entityaccesscount":"value":0,"limit":400,"timingprofile":["100.00% 97.870 1 -total"," 51.57% 50.475 1 Sablon:Jegyzetek"," 48.31% 47.280 2 Sablon:References"," 30.86% 30.202 1 Sablon:Cite_web"," 30.52% 29.873 1 Sablon:Fordítás"," 17.70% 17.327 1 Sablon:Portál"," 14.55% 14.237 1 Sablon:A(z)"," 11.31% 11.069 1 Sablon:Névelő_adott_szóhoz"," 8.90% 8.708 1 Sablon:ISO_639"," 4.25% 4.156 2 Sablon:Hasáb_vége"],"scribunto":"limitreport-timeusage":"value":"0.008","limit":"10.000","limitreport-memusage":"value":696677,"limit":52428800,"cachereport":"origin":"mw1256","timestamp":"20190304151652","ttl":2592000,"transientcontent":false););"@context":"https://schema.org","@type":"Article","name":"INI","url":"https://hu.wikipedia.org/wiki/INI","sameAs":"http://www.wikidata.org/entity/Q1141412","mainEntity":"http://www.wikidata.org/entity/Q1141412","author":"@type":"Organization","name":"Contributors to Wikimedia projects","publisher":"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":"@type":"ImageObject","url":"https://www.wikimedia.org/static/images/wmf-hor-googpub.png","datePublished":"2014-02-20T17:18:32Z","dateModified":"2018-11-16T04:14:13Z"(window.RLQ=window.RLQ||[]).push(function()mw.config.set("wgBackendResponseTime":128,"wgHostname":"mw1324"););