JAVAはINIファイルを読み書きして、自ら測定します

7341 ワード

コードは次のとおりです.
 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * INI    
 * 
 * @author
 * @date 2011-12-1   07:58:57
 * 
 * @version 1.0
 */
public class IniFile
{
    private static String RN = "\r
"; /** * ini * * @param file * * @param section * * @param variable * * @param defaultValue * * @return * @throws IOException * io */ public static String getProfileString(String file, String section, String variable, String defaultValue) throws IOException { String strLine, valueString = ""; BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); boolean isInSection = false; try { while ((strLine = bufferedReader.readLine()) != null) { // INI strLine = strLine.trim(); Pattern p; Matcher m, m2; p = Pattern.compile("\\[\\s*" + section + "\\s*\\]"); Pattern p2 = Pattern.compile("\\[.*\\]"); m = p.matcher((strLine)); m2 = p2.matcher((strLine)); if (m2.find()) { if (m.find()) { isInSection = true; } else { isInSection = false; } } if (isInSection == true) { strLine = strLine.trim(); String[] strArray = strLine.split("="); if (strArray.length == 2) { valueString = strArray[0].trim(); if (valueString.equalsIgnoreCase(variable)) { valueString = strLine.substring(strLine.indexOf("=") + 1).trim(); return valueString; } } } } } catch (Exception e) { // TODO: handle exception } finally { bufferedReader.close(); } return defaultValue; } /** * ini * * @param file * * @param section * * @param variable * * @param value * * @throws IOException * io */ public static boolean setProfileString(String file, String section, String variable, String value) throws IOException { String fileContent, allLine; BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); boolean isInSection = false; fileContent = ""; try { while ((allLine = bufferedReader.readLine()) != null) { allLine = allLine.trim(); Pattern p; Matcher m, m2; p = Pattern.compile("\\[\\s*" + section + "\\s*\\]"); Pattern p2 = Pattern.compile("\\[.*\\]"); m = p.matcher((allLine)); m2 = p2.matcher((allLine)); if (m2.find()) { if (m.find()) { isInSection = true; } else { isInSection = false; } } if (isInSection == true) { String[] strArray = allLine.split("="); if (allLine.indexOf("=") > 0) { String valueString = strArray[0].trim(); if (valueString.equalsIgnoreCase(variable)) { String newLine = valueString + "=" + value; fileContent += " " + newLine + RN; } else { fileContent += " " + allLine + RN; } } else { fileContent += allLine + RN; } } else { if (allLine.indexOf("=") > 0) { fileContent += " " + allLine + RN; } else { fileContent += allLine + RN; } } } // System.out.println(fileContent); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file, false)); bufferedWriter.write(fileContent); bufferedWriter.flush(); bufferedWriter.close(); return true; } catch (Exception e) { e.printStackTrace(); } finally { bufferedReader.close(); } return false; } /** * * * * @param args * @author * @date 2011-12-1 08:00:01 */ public static void main(String[] args) { try { System.out.println("write!... " + IniFile.setProfileString("1.ini", "GENERAL", "OPERATOR", "22")); System.out.println("read!... " + IniFile.getProfileString("1.ini", "GENERAL", "OPERATOR", "")); } catch (IOException e) { System.out.println(e.toString()); } } }