ini工具類;java
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class IniReader { // section item value private static Map<String, HashMap<String, String>> sectionsMap = new HashMap<String, HashMap<String, String>>(); // item value private static HashMap<String, String> itemsMap = new HashMap<String, String>(); private static String currentSection = ""; /** * Load data from target file * @param file target file. It should be in ini format */ private static void loadData(File file) { BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { line = line.trim(); if ("".equals(line)) continue; if (line.startsWith("[") && line.endsWith("]")) { // Ends last section if (itemsMap.size() > 0 && !"".equals(currentSection.trim())) { sectionsMap.put(currentSection, itemsMap); } currentSection = ""; itemsMap = null; // Start new section initial currentSection = line.substring(1, line.length() - 1); itemsMap = new HashMap<String, String>(); } else { int index = line.indexOf("="); if (index != -1) { String key = line.substring(0, index); String value = line.substring(index + 1, line.length()); itemsMap.put(key, value); } } // System.out.println(line); } reader.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { e1.printStackTrace(); } } } } public static String getValue(String section, String item, File file) { loadData(file); HashMap<String, String> map = sectionsMap.get(section); if (map == null) { return "No such section:" + section; } String value = map.get(item); if (value == null) { return "No such item:" + item; } return value; } public static String getValue(String section, String item, String fileName) { File file = new File(fileName); return getValue(section, item, file); } public static List<String> getSectionNames(File file) { List<String> list = new ArrayList<String>(); loadData(file); Set<String> key = sectionsMap.keySet(); for (Iterator<String> it = key.iterator(); it.hasNext();) { list.add(it.next()); } return list; } public static Map<String, String> getItemsBySectionName(String section, File file) { loadData(file); return sectionsMap.get(section); } }
具體使用:app
* 文 件 名: TestReadIni.java import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.List; /** * <讀取ini文件中的內容> * <把源文件從GBK轉成UTF-8> * @author zyy * @version [版本號, 2012-11-17] * @see [相關類/方法] * @since [產品/模塊版本] */ public class TestReadIni { public static void main(String[] args) { String srcFileName = "D:\\shMap.ini"; String destFileName = "D:\\test.ini"; try { transferFile(srcFileName, destFileName); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } File file = new File(destFileName); List<String> se = IniReader.getSectionNames(file); String distance = ""; // 離基站的距離 for (int i = 0; i < se.size(); i++) { distance = IniReader.getValue(se.get(i), "POSITION", file); System.out.println("distance: " + distance); } } private static void transferFile(String srcFileName, String destFileName) throws IOException { String line_separator = System.getProperty("line.separator"); FileInputStream fis = new FileInputStream(srcFileName); StringBuffer content = new StringBuffer(); DataInputStream in = new DataInputStream(fis); BufferedReader d = new BufferedReader(new InputStreamReader(in, "GBK")); String line = null; while ((line = d.readLine()) != null) content.append(line + line_separator); d.close(); in.close(); fis.close(); Writer ow = new OutputStreamWriter(new FileOutputStream(destFileName), "utf-8"); ow.write(content.toString()); ow.close(); } }