⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configurationfile.java

📁 camra calibration and you will enjoy it!
💻 JAVA
字号:
/*---------------------------------------------------------------------------------------ITESM - Campus MonterreyMaestria en Sistemas InteligentesProyecto de Tesis : Seguimiento Visual de Multiples Objetos con Camara Movil en Ambientes DinamicosCreado por        : Hugo Ortega Hernandez - hugorteg@yahoo.comFecha             : 14/08/2003-----------------------------------------------------------------------------------------*/package itesm.gvision.tools;import java.io.*;import java.util.*;import java.text.*;//----------------------------------------------------------------------------------/** * Permite leer y escribir archivos de configuraci髇 en formato INI. * @author  hugo */public class ConfigurationFile{	/** Nombre del archivo de configuracion */	private String file;		/** Nombre del archivo de configuracion por default */	private String defaultFile;		/** Tabla hash con los parametros de configuracion leidos del archivo */	private Hashtable params;		//----------------------------------------------------------------------------------	/** 	 * Creates a new instance of ConfigurationFile.	 * @param thefile El archivo con los datos de configuracion.	 */	public ConfigurationFile(String thefile)	{		file = thefile;		defaultFile = thefile;		params = new Hashtable();		parse();	}			//----------------------------------------------------------------------------------	/**	 * Analiza el archivo y 	 */	private void parse()	{		// Intentamos abrir el archivo para construir la tabla hash con su contenido...		try{			BufferedReader in = new BufferedReader(new FileReader(file));			try{				int n = 0;				String line;				while ((line = in.readLine()) != null){					n++;					// lineas en blanco...					if (line.trim().length() == 0) continue;					// secciones y comentarios de linea completa...					if (line.trim().charAt(0) == ';' || line.trim().charAt(0) == '[') continue;					// todas las demas...					if (line.indexOf('=') > 0){ // linea valida??						StringTokenizer tok = new StringTokenizer(line, "=", false);						String key = tok.nextToken();						String value = tok.nextToken();						if (key == null || value == null){							System.out.println("ConfigurationFile : Syntax error in line " + n + " : " + file);						}						else{							params.put(key.trim().toUpperCase(), value.trim());						}					}					else{						System.out.println("ConfigurationFile : Syntax error in line " + n + " : " + file);					}				}			}			catch (IOException e){				System.out.println("ConfigurationFile : IOException : " + file);			}		}		catch(FileNotFoundException e){			System.out.println("ConfigurationFile : FileNotFoundException : " + file);		}			}		//----------------------------------------------------------------------------------	/**	 * Obtiene el conjunto de valores de un string de numeros separados por coma	 */	private Vector parseArray(String list)	{		Vector ret = new Vector();		StringTokenizer tok = new StringTokenizer(list, " ", false);		while (tok.hasMoreTokens()){			try{				ret.add(new Double(tok.nextToken()));			}			catch (NumberFormatException e){				System.out.println("ConfigurationFile.parseCommaArray : Invalid value.");				e.printStackTrace();			}		}		return ret;	}		//----------------------------------------------------------------------------------	/**	 * Redefine el metido toString para visualizar el contenido del archivo.	 * @return Un string con la representacion de los parametros en orden alfabetico.	 */	public String toString()	{		TreeMap tmap = new TreeMap(params);		String output = "";		for (Iterator i = tmap.keySet().iterator(); i.hasNext(); ){			String k = (String)i.next();			String v = (String)params.get(k);			output += k + " = " + v + "\n";		}		return output;     }		//----------------------------------------------------------------------------------	/**	 * Retorna el parametro de configuracion especificado, en forma de String.	 * @param p El parametro que se quiere obtener.	 * @return El valor del parametro en forma de String.	 */	public String getParam(String p)	{		String v = (String)params.get(p.trim().toUpperCase());		if (v == null) System.out.println("ConfigurationFile : Param not found : " + p);		return v;	}		//----------------------------------------------------------------------------------	/**	 * Retorna el parametro de configuracion especificado, como entero.	 * @param p Parametro que se quiere obtener.	 * @return El valor del parametro en forma de entero.	 */	public int getParamAsInteger(String p)	{		String v = (String)params.get(p.trim().toUpperCase());		int nv = 0;		if (v != null){			try{				nv = Integer.parseInt(v);			}			catch (NumberFormatException e) {				System.out.println("ConfigurationFile : Unable to get integer value for param : " + p);			}		}		else{			System.out.println("ConfigurationFile : Param not found : " + p);		}		return nv;	}		//----------------------------------------------------------------------------------	/**	 * Retorna el parametro de configuracion especificado, como double.	 * @param p Parametro que se desea obtener.	 * @return El valor del parametro en forma de double.	 */	public double getParamAsDouble(String p)	{		String v = (String)params.get(p.trim().toUpperCase());		double nv = 0;		if (v != null) {			try{				nv = Double.parseDouble(v);			}			catch (NumberFormatException e) {				System.out.println("ConfigurationFile : Unable to get double value for param : " + p);			}		}		else{			System.out.println("ConfigurationFile : Param not found : " + p);		}		return nv;	}	//----------------------------------------------------------------------------------	/**	 * Retorna el parametro de configuracion especificado, como double.	 * @param p Parametro que se desea obtener.	 * @return El valor del parametro en forma de booleano.	 */	public boolean getParamAsBoolean(String p)	{		String v = (String)params.get(p.trim().toUpperCase());		boolean nv = true;		if (v != null) {			nv = Boolean.valueOf(v).booleanValue();		}		else{			System.out.println("ConfigurationFile : Param not found : " + p);		}		return nv;	}	//----------------------------------------------------------------------------------	/**	 * Retorna el parametro de configuracion especificado, como un arreglo de doubles.	 * @param p El parametro que se desea obtener	 * @return Un arreglo double con los valores.	 */	public double[] getParamAsDoubleArray(String p)	{		String v = (String)params.get(p.trim());		Vector numbers = this.parseArray(v);		double[] ret = new double[numbers.size()];		for(int i=0; i<ret.length; i++){			ret[i] = ((Double)numbers.get(i)).doubleValue();		}		return ret;	}		//----------------------------------------------------------------------------------	/**	 * Asigna el valor especificado al parametro p. 	 * @param p El parametro que se desea modificar	 * @param v El valor que se asignara al parametro	 * @return true si pudo asignar el valor; false en caso de que el parametro no exista.	 */	public boolean setParam(String p, String v)	{		if (params.containsKey(p.trim().toUpperCase())){			params.put(p.toUpperCase(), v);			return true;		}		return false;	}		//----------------------------------------------------------------------------------	/**	 * Agrega un nuevo parametro de configuracion	 * @param p El nombre del parametro	 * @param v El valor inicial	 */	public void addParam(String p, String v)	{		params.put(p.trim().toUpperCase(), v.trim());	}		//----------------------------------------------------------------------------------	/**	 * Asigna el valor entero especificado al parametro.	 * @param p El parametro que se desea modificar	 * @param v El valor entero que se asiganara al parametro	 * @return true si pudo asignar el valor; false en caso de que el parametro no exista.	 */	public boolean setParam(String p, int v)	{		if (params.containsKey(p.trim().toUpperCase())){			String val = Integer.toString(v);			params.put(p.trim().toUpperCase(), val);			return true;		}		return false;	}	//----------------------------------------------------------------------------------	/**	 * Asigna el valor double especificado al parametro.	 * @param p El parametro que se desea modificar	 * @param v El valor double que se asiganara al parametro	 * @return true si pudo asignar el valor; false en caso de que el parametro no exista.	 */	public boolean setParam(String p, double v)	{		if (params.containsKey(p.toUpperCase())){			String val = Double.toString(v);			params.put(p.trim().toUpperCase(), val);			return true;		}		return false;	}		//----------------------------------------------------------------------------------	/**	 * Asigna los valores del arreglo double especificado al parametro.	 * @param p El parametro que se desea modificar	 * @param v El valor double que se asiganara al parametro	 * @return true si pudo asignar el valor; false en caso de que el parametro no exista.	 */	public boolean setParam(String p, double v[])	{		if (params.containsKey(p.toUpperCase())){			String val = "";			for(int i=0; i<v.length; i++){				val += v[i] + " ";			}			params.put(p.trim().toUpperCase(), val);			return true;		}		return false;	}		//----------------------------------------------------------------------------------	/**	 * Asigna el valor booleano especificado al parametro.	 * @param p El parametro que se desea modificar	 * @param v El valor booleano que se asiganara al parametro	 * @return true si pudo asignar el valor; false en caso de que el parametro no exista.	 */	public boolean setParam(String p, boolean v)	{		if (params.containsKey(p.toUpperCase())){			String val = Boolean.toString(v);			params.put(p.trim().toUpperCase(), val);			return true;		}		return false;	}		//----------------------------------------------------------------------------------	/**	 * Guarda el archivo de configuracion con el contenido actual	 */	public void save()	{		Calendar cal = Calendar.getInstance(TimeZone.getDefault());		String DATE_FORMAT = "dd/MM/yyyy HH:mm:ss:S";		SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);		sdf.setTimeZone(TimeZone.getDefault());		String fecha = sdf.format(cal.getTime()).toUpperCase();				try{			FileWriter fw = new FileWriter(file, false);			fw.write(";----------------------------------------------\n");			fw.write("; " + file + "\n");			fw.write("; Configuration file.\n");			fw.write("; Updated at " + fecha + "\n");			fw.write(";----------------------------------------------\n");			fw.write(this.toString());			fw.close();		}		catch (Exception e){			System.out.println("ConfigurationFile : Error saving the configuration file: " + file);		}	}			//----------------------------------------------------------------------------------	/**	 * Guarda el archivo de configuracion con el contenido actual	 * @param name El nombre del archivo.	 */	public void save(String name)	{		String orig = this.file;		this.file   = name;		try{			this.save();		}		finally{			this.file = orig;		}	}		//----------------------------------------------------------------------------------	/**	 * Guarda el archivo de configuracion con el contenido actual	 */	public void saveDefault()	{		String orig = this.file;		this.file   = this.defaultFile;		try{			this.save();		}		finally{			this.file = orig;		}	}		//----------------------------------------------------------------------------------	/**	 * Lee el archivo con la configuracion especificada	 * @param name El nombre del archivo a leer.	 */	public void load(String name)	{		file = name;		params.clear(); // tan solo por si acaso.		params = new Hashtable();		parse();				}			//----------------------------------------------------------------------------------	/*	 public static void main(String args[])	{		ConfigurationFile cfg = new ConfigurationFile("system.config");		System.out.println(cfg);		double[] foo = cfg.getParamAsDoubleArray("CAMERA_INTRINSICS");		System.out.print("Intrinsic = ");		for(int i=0; i<foo.length; i++) System.out.print(foo[i] + ",");		System.out.println();		foo[0] = 0;		foo[2] = 0;		foo[8] = 12345.6789;		cfg.setParam("CAMERA_INTRINSICS", foo);		foo = cfg.getParamAsDoubleArray("CAMERA_INTRINSICS");		System.out.print("Intrinsic = ");		for(int i=0; i<foo.length; i++) System.out.print(foo[i] + ",");		System.out.println();			}	*/}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -