Mit Java ein ini-File zerlegen?

MadMax2581

Mitglied
Hallo zusammen! Hab mal wieder eine mehr oder weniger schwierige Frage an die Experten.

Kann man mittels Java ein ini-File nach seinen wünschen zerlegen?

Mein ini-File hat bspw. folgende Struktur:

=================================================================

[COMPILER]
TYPE = cosmic

[SETTINGS]
MAX_RAM = 2048
MAX_ROM = 27136
MAX_EEPROM = 0
ROM_CONTENT = FTC,CHKSUM,VCT,VERSION
RAM_CONTENT = .bss,DIRECT,WL_Z_RAM,pparam,aparam
EEPROM_CONTENT = uapara
TOLERANZGELB = 70
TOLERANZROT = 80
STACKOVERFLOWWARNING = 0
SHOWSZENARIOS = 1
SHOWTASKS = 1

[PACKAGES]
BSW-IO = port, dio, adc
BSW-PERIPHERAL = crtsi, mcu, gpt, spi, spi_cfg, trm, checksum, ctrlram, wdg, sbc
BSW-APPLICATIONS = scheduler, scheduler_cfg, battmon, errtrace, psa_t8, version
BSW-POWERMAN = powerman, powerman_cfg
BSW-E2EMU = nvram_drv_s08, nvram_mgn, nvram_stat, nvram_api, nvram_cfg
BSW-API = api
FLASH_TC = psa_t8_ftc
LIN_DRIVER = linapi, lintp, linlayer2, linlayer1, linkwp, linkwp_cfg, linhook
WINDOWLIFTER = wl_adapt, wl_anlauf, wl_antitrap, wl_atcalc, wl_interrupt
MISC = abs, memcpy, udiv, ireg, lreg, jctab, imul, call, memset, stmov


[TASK]
Scheduler_TaskInit = 0x7602 (Kanal 1)
Scheduler_TaskX1 = 0x7606 (Kanal 2)
Scheduler_TaskX2 = 0x760A (Kanal 3)
Scheduler_TaskX4 = 0x760E (Kanal 4)
Scheduler_TaskX8 = 0x7612 (Kanal 5)
Scheduler_TaskX16 = 0x7616 (Kanal 6)
Scheduler_TaskX32 = 0x761A (Kanal 7)
Scheduler_TaskX64 = 0x761E (Kanal 8)
Scheduler_TaskX128 = 0x7622 (Kanal 9)
Scheduler_TaskXResidual = 0x7626 (Kanal10)
Stack usage = 0x762B (Kanal11)

[REPORTS]
Metrikreport = MISRA4,MISRA8,MISRA,STECT,STCDN


=================================================================

Ich möchte jetzt nur einen bestimmten Block aus dem ini-File haben --> bspw. [PACKAGES] und dann nur auf seine Datensätze (bestehend aus Key = Daten) zugreifen können. Gibt es da eine Möglichkeit?

Habe schon herausgefunden das es bei Java extra dafür die Properties-Klasse gibt. Bekomme es aber einfach nicht hin nur einen einzelnen Block (z.B. [PACKAGES] ) zu erhalten.

Kennt sich jemand damit aus und kann mir helfen, oder kennt eine andere Möglichkeit wie ich das sicher lösen kann (die Blöcke sind immer gleich, nur die Daten in den Blöcken können sich jedes mal ändern)?

Ich danke euch für eure Hilfe.

Gruss Max
 
Hey!

Nach ein bisschen probieren hat das gut geklappt. Danke!


Hab jetzt aber noch ein weiteres Problem. Muss jetzt noch map-Files zerlegen. Haste du da vielleicht ne Ahnung wie ich das machen könnte? Für ini-Files gabs ja bei Apache Commons Configuration extra Klassen, für map-Files leider nicht (glaube auch nicht das das so einfach geht).

Hat dafür noch jemand eine Idee?

Gruss Max
 
Moin!
Was ist denn eine "map" -File? Ich hab zwar einige Map Dateien auf meinem PC aber die sind von der Struktur alle anders...
Beschreib mal deren Struktur, oder noch besser gib ein Beispiel..

*grüssle*
MeinerEiner
 
Die Map-Files sehen etwa so aus:

Map of ..\binary\psa_t8.h08 from link file psa_t8.lkf - Fri Sep 28 08:56:39 2007


--------
Segments
--------

start 000000bd end 000000bd length 0 segment .bss
start 00008000 end 00008010 length 16 segment FTC
start 00008010 end 00008017 length 7 segment CHKSUM
start 00008017 end 00008065 length 78 segment VCT
start 00008065 end 00008068 length 3 segment VERSION
start 00008068 end 00008071 length 9 segment WLVERSION
start 00008071 end 00008285 length 532 segment CONST
start 00008285 end 0000bee3 length 15454 segment TEXT
start 0000c012 end 0000c0e0 length 206 segment WL_CONST
start 0000c0e0 end 0000e195 length 8373 segment WL_CODE
start 0000e195 end 0000f5fd length 5224 filler (0xac)
start 00000070 end 000000bd length 77 segment DIRECT
start 000000bd end 000000f7 length 58 segment WL_Z_RAM
start 00000100 end 0000010a length 10 segment pparam
start 0000010a end 00000127 length 29 segment aparam, initialized
start 0000befa end 0000bf17 length 29 segment aparam, from
start 00000127 end 0000015d length 54 segment bparam, initialized
start 0000bf17 end 0000bf4d length 54 segment bparam, from
start 0000015d end 000001be length 97 segment cparam, initialized
start 0000bf4d end 0000bfae length 97 segment cparam, from
start 000001be end 00000222 length 100 segment sampleram, initialized
start 0000bfae end 0000c012 length 100 segment sampleram, from
start 00000222 end 00000223 length 1 segment dparam
start 00000223 end 00000332 length 271 segment EXTENDED
start 00000332 end 000003e8 length 182 segment WL_VAR
start 000003e8 end 000003fa length 18 segment RTD_ZONE_RTI
start 000003fa end 00000448 length 78 segment RTD_ZONE_SLP
start 00000448 end 00000496 length 78 segment BUFFER_RTI
start 00000496 end 00000538 length 162 segment WL_ZONE3
start 00000538 end 0000054a length 18 segment WL_ZONE6
start 0000054a end 00000564 length 26 segment WL_ZONE20
start 00000564 end 0000059d length 57 segment WL_ZONE5
start 00000800 end 0000083f length 63 segment CTRLRAM
start 00000868 end 00000870 length 8 segment NOCLEAR
start 00000000 end 00257ff7 length 2457591 segment .debug
start 0000bee3 end 0000befa length 23 segment .init


-------
Modules
-------

..\objects\crtsi.o:
start 00008285 end 0000831d length 152 section TEXT (.text)
start 00000000 end 00000048 length 72 section .debug

..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length 318 section TEXT (.text)
start 00000048 end 00000097 length 79 section .debug

..\objects\romcheck_asm.o:
start 0000845b end 0000850e length 179 section TEXT (.text)
start 00000097 end 000000e6 length 79 section .debug

..\objects\fctcpy.o:
start 0000850e end 00008550 length 66 section TEXT (.text)
start 000000e6 end 0000011a length 52 section .debug

..\objects\mcu.o:
start 0000011a end 00009c86 length 39788 section .debug
start 00008550 end 00008572 length 34 section TEXT (.text)
start 00008572 end 0000857a length 8 section TEXT (.text)
start 0000857a end 0000857d length 3 section TEXT (.text)

..\objects\port.o:
start 00009c86 end 000137b4 length 39726 section .debug
start 0000857d end 000085ed length 112 section TEXT (.text)
start 000085ed end 000085fd length 16 section TEXT (.text)

..\objects\gpt.o:
start 000137b4 end 0001d48d length 40153 section .debug
start 00008071 end 00008079 length 8 section CONST (.const)
start 000085fd end 00008628 length 43 section TEXT (.text)
start 00008628 end 0000863a length 18 section TEXT (.text)
start 0000863a end 0000864d length 19 section TEXT (.text)

..\objects\scheduler.o:
start 00000223 end 0000022c length 9 section EXTENDED (.bss)
start 00000070 end 00000074 length 4 section DIRECT (.ubsct)
start 0001d48d end 000274f0 length 41059 section .debug
start 0000864d end 000087d4 length 391 section TEXT (.text)
start 000087d4 end 000087dd length 9 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start 000087dd end 00008805 length 40 section TEXT (.text)
start 00008805 end 0000881d length 24 section TEXT (.text)

..\objects\scheduler_cfg.o:
start 0000022c end 0000022f length 3 section EXTENDED (.bss) #ram
start 000274f0 end 00031567 length 41079 section .debug #entfallen
start 0000881d end 00008885 length 104 section TEXT (.text)
start 00008885 end 000088a1 length 28 section TEXT (.text)
start 000088a1 end 000088b2 length 17 section TEXT (.text)
start 000088b2 end 000088bb length 9 section TEXT (.text)
start 000088bb end 000088c4 length 9 section TEXT (.text)
start 000088c4 end 000088cd length 9 section TEXT (.text)
start 000088cd end 000088d0 length 3 section TEXT (.text)
start 000088d0 end 000088d1 length 1 section TEXT (.text)
start 000088d1 end 000088d4 length 3 section TEXT (.text)
start 000088d4 end 000088d5 length 1 section TEXT (.text)
start 000088d5 end 000088e4 length 15 section TEXT (.text)
start 000088e4 end 000088e7 length 3 section TEXT (.text)
start 000088e7 end 000088f0 length 9 section TEXT (.text)
start 000088f0 end 000088fd length 13 section TEXT (.text)
start 000088fd end 0000890a length 13 section TEXT (.text)
start 00008079 end 00008087 length 14 section CONST (.const)
start 0000890a end 00008957 length 77 section TEXT (.text)
start 00008957 end 00008964 length 13 section TEXT (.text)
start 000001be end 000001cb length 13 section sampleram (.sampleram) #sonderfall

..\objects\dio.o:
start 0000022f end 00000239 length 10 section EXTENDED (.bss)
start 00031567 end 0003b51e length 40887 section .debug
start 00008964 end 000089c7 length 99 section TEXT (.text)
start 000089c7 end 00008a22 length 91 section TEXT (.text)
start 00008a22 end 00008a6a length 72 section TEXT (.text)

..\objects\adc.o:
start 00000239 end 0000023c length 3 section EXTENDED (.bss)
start 0003b51e end 000453a0 length 40578 section .debug
start 00008087 end 000080b9 length 50 section CONST (.const)
start 00008a6a end 00008af4 length 138 section TEXT (.text)
start 00008af4 end 00008b2e length 58 section TEXT (.text)
start 00008b2e end 00008b76 length 72 section TEXT (.text)
start 00008b76 end 00008bfd length 135 section TEXT (.text)
start 00008bfd end 00008c15 length 24 section TEXT (.text)

..\objects\spi.o:
start 0000023c end 0000023f length 3 section EXTENDED (.bss)
start 000453a0 end 0004f092 length 40178 section .debug
start 00008c15 end 00008c23 length 14 section TEXT (.text)
start 00008c23 end 00008c56 length 51 section TEXT (.text)
start 00008c56 end 00008c5f length 9 section TEXT (.text)
start 00008c5f end 00008c63 length 4 section TEXT (.text)
start 00008c63 end 00008c70 length 13 section TEXT (.text)

..\objects\spi_cfg.o:
start 0004f092 end 00058bf1 length 39775 section .debug
start 000080b9 end 000080be length 5 section CONST (.const)

-----------
Stack usage
-----------

..\objects\adc.o:
_Adc_Init 2 (2)
_Adc_MainFunction 30 (7)
_Adc_MeasureChannel 23 (9)
_Adc_MeasureChannelSingle 5 (5)
_Adc_NormBandgapApprox 14 (9)

..\objects\api.o:
L14241_API_CentralCloseSampler 3 (3)
_API_CenCloseCyclicEval 6 (3)
_API_CenCloseInitWakeup 4 (2)
_API_Init 6 (3)
_API_Notify_QuickUndervoltage > 13 (2)
_API_OpenBdmsChannel 2 (2)
_API_PrepareSleep 3 (3)
_API_SampleCyclicRam 2 (2)
_API_SampleCyclicRom 2 (2)
_API_Timer_128ms 11 (2)
_API_Update_1ms 10 (3)
_API_Update_2ms 26 (3)
_API_Update_4ms 6 (3)
_API_Update_8ms 17 (13)

..\objects\battmon.o:
_Battmon_GetStatus 2 (2)
_Battmon_Init 2 (2)
_Battmon_MainFunction 18 (5)

..\objects\checksum.o:
_CheckSum_CRC16 4 (4)
_CheckSum_CheckData 7 (3)
_CheckSum_CopyData 7 (3)
_CheckSum_Start 7 (7)

..\objects\dio.o:
_Dio_DebouncePin 6 (6)
_Dio_InitDebouncer 2 (2)
_Dio_MainFunction 8 (2)



Und so weiter. Muss halt jetzt nach einem einzelnen Block zerlegen (Bsp. ------ Modules ------- --> siehe oben) und dann nach den Unterelementen (Bsp.: ..\objects\crtsi.o: ) und dann die einzelnen Werte --> in den Zeilen darunter --> zusammen rechnen.

Gruss Max
 
Zurück