001/* 002 * Copyright 2005,2009 Ivan SZKIBA 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.ini4j.tutorial; 017 018import org.ini4j.Wini; 019 020import org.ini4j.sample.Dwarf; 021import org.ini4j.sample.Dwarfs; 022 023import org.ini4j.test.DwarfsData; 024import org.ini4j.test.Helper; 025 026import static org.junit.Assert.*; 027 028import java.io.File; 029import java.io.FileInputStream; 030import java.io.FileOutputStream; 031import java.io.IOException; 032 033//<editor-fold defaultstate="collapsed" desc="apt documentation"> 034//| 035//| ------------------- 036//| One minute Tutorial 037//| 038//|One minute Tutorial - First step 039//| 040//| First step with \[ini4j\] library. No data model, no interfaces, no design 041//| patterns, simply read and write windows .ini files. 042//| 043//</editor-fold> 044public class OneMinuteTutorial extends AbstractTutorial 045{ 046 public static void main(String[] args) throws Exception 047 { 048 new OneMinuteTutorial().run(filearg(args)); 049 } 050 051 protected void copy(File inputFile, File outputFile) throws IOException 052 { 053 FileInputStream is = new FileInputStream(inputFile); 054 FileOutputStream os = new FileOutputStream(outputFile); 055 byte[] buff = new byte[8192]; 056 int n; 057 058 while ((n = is.read(buff)) > 0) 059 { 060 os.write(buff, 0, n); 061 } 062 063 is.close(); 064 os.close(); 065 } 066 067 @Override protected void run(File arg) throws Exception 068 { 069 File file = File.createTempFile("tutorial", ".ini"); 070 071 file.deleteOnExit(); 072 copy(arg, file); 073 sample01(file.getCanonicalPath()); 074 sample02(file.getCanonicalPath()); 075 } 076 077//| 078//| Lets read some value from .ini file... 079//| 080//{ 081 void sample01(String filename) throws IOException 082 { 083 Wini ini = new Wini(new File(filename)); 084 int age = ini.get("happy", "age", int.class); 085 double height = ini.get("happy", "height", double.class); 086 String dir = ini.get("happy", "homeDir"); 087 088//} 089//| ... assuming there is a section with name <<<happy>>>, which contains at least 090//| the following options: <<<age>>>, <<<height>>> and <<<homeDir>>>, something like 091//| this: 092//| 093//|+---------+ 094//| [happy] 095//| age = 99 096//| height = 77.66 097//| homeDir = /home/happy 098//|+---------+ 099//| 100//| 101 assertEquals(DwarfsData.happy.age, age); 102 assertEquals(DwarfsData.happy.height, height, Helper.DELTA); 103 assertEquals(DwarfsData.happy.homeDir, dir); 104 } 105 106//| Now let see how to write values.... 107//| 108//{ 109 void sample02(String filename) throws IOException 110 { 111 Wini ini = new Wini(new File(filename)); 112 113 ini.put("sleepy", "age", 55); 114 ini.put("sleepy", "weight", 45.6); 115 ini.store(); 116 117//} 118//| ... and then file will have a section <<<sleepy>>> and this section 119//| will contains at least two options: <<<age>>> with value <<<55>>> and <<<weight>>> 120//| with value <<<45.6>>>, something like this: 121//| 122//|+---------+ 123//| [sleepy] 124//| age = 55 125//| weight = 45.6 126//|+---------+ 127//| 128 assertEquals(55, (int) ini.get(Dwarfs.PROP_SLEEPY, Dwarf.PROP_AGE, int.class)); 129 assertEquals(45.6, (double) ini.get(Dwarfs.PROP_SLEEPY, Dwarf.PROP_WEIGHT, double.class), Helper.DELTA); 130 } 131 132//| 133//| If you want to know more about this library, read 134//| {{{../tutorial/index.html}tutorials}} 135}