C sono delle routine già pronte, o devo implementare tutto da 0? e poi i file ini si usano come normali file di testo?
C sono delle routine già pronte, o devo implementare tutto da 0? e poi i file ini si usano come normali file di testo?
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class IniParser {
// Handler per la lettura del file
private BufferedReader file;
// Nome del file INI di configurazione
private String fileName;
/**
* Creazione del parser.
*
* @param fileName il nome del file INI da leggere
*/
public IniParser(String fileName) throws FileNotFoundException
{
this.fileName = fileName;
try {
file = new BufferedReader(new FileReader(fileName));
}
catch ( FileNotFoundException e ) {
throw(e);
}
}
/**
* Ritorna il nome del file INI.
*/
private String getFileName() {
return fileName;
}
/**
* Chiusura dei flussi di I/O con il file INI.
*/
public void close()
{
try {
file.close();
}
catch ( IOException e ) {
}
}
/**
* Recupera il valore di un parametro nel file INI.
*
* @param header il nome della sezione
* @param name il nome del parametro
*
* @return il valore del parametro
*/
public String getValue(String header, String name)
{
return getValue(header, name, 1);
}
/**
* Recupera il valore di un parametro nel file INI.
*
* @param header il nome della sezione
* @param name il nome del parametro
* @param position l'occorrenza cercata (la prima ha indice 1)
*
* @return il valore del parametro
*/
public String getValue(String header, String name, int position)
{
String value = "";
String section = "";
String line = "";
header = "[" + header + "]";
int index = 0;
boolean flag = true;
try {
close();
file = new BufferedReader(new FileReader(fileName));
for (line = file.readLine(); line != null && flag; ) {
if ( !line.equals("") ) {
if ( line.substring(0, 1).equals("[") && line.substring(line.length() - 1, line.length()).equals("]") )
section = line;
else if ( section.equals(header) && name.equals(line.substring(0, line.indexOf('='))) ) {
++index;
if ( index == position ) {
value = line.substring(line.indexOf('=') + 1, line.length());
flag = false;
}
}
}
line = file.readLine();
}
}
catch ( IOException e ) {
}
if ( value.equals("") )
value = null;
return value;
}
/**
* Conta il numero di occorrenze con cui un parametro si presenta nel file INI.
*
* @param header il nome della sezione
* @param name il nome del parametro
*
* @return il numero di occorrenze
*/
public int getOccurrency(String header, String name)
{
int i = 0;
while ( getValue(header, name, ++i) != null );
return i - 1;
}
}
questo è il codice per gestire i file ini!
Nel main, o cmq dove ti serve metti:
HashMap parameters=null;
String iniFileName = "Parameters.ini";
IniParser iniFile=null;
try
{
iniFile = new IniParser("Parameters.ini");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
parameters = new HashMap();
String ip = iniFile.getValue("DATABASE","Ip");
String name_db=iniFile.getValue("DATABASE", "Name");
String utente= iniFile.getValue("DATABASE", "User");
String numcomS=iniFile.getValue("COM", "Port");
Io t ho fatto un esempio dove recupero dal file ini ip nome e user da [database] e numcoms da [com]
il mio file parameters.ini sara quindi cosi:
[DATABASE]
Name=db_ciao
Ip=192.168.1.52
User=root
Pass=miao
[COM]
Port=1
ottimo dopo lo provo