代码如下:
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\n"; /** * 从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()); } } }
相关推荐
以上就是使用Java读写Ini文件的基本方法。在实际项目中,你可能需要根据具体需求进行调整,比如处理异常、文件不存在的情况,或者在读写操作前后进行备份等。确保始终处理好错误和异常,以提高代码的健壮性。
JAVA使用JNI读写INI文件的实例。 JAVA本身并没有读写INI文件的现成方法,有些人自己编写方法来读写INI文件,但是这样的方法或多或少的存在着一些问题。此示例旨在利用本地的WIN32API函数来读写INI文件,这样可以保证...
在这个Java项目中,开发者创建了一个功能,使得程序能够读取、写入和管理INI文件,同时结合了Swing组件来提供用户界面,使得用户可以直接在图形界面上进行文件操作。 1. **INI文件结构**: INI文件由键值对组成,...
本项目就是一个关于如何使用Java读写INI文件的小例子。 首先,我们需要一个第三方库,如JIni库,它可以方便地进行INI文件操作。在这个项目中,相关jar包可能就是`JIni.jar`,它位于根目录下的`ini`文件夹内的`bin`...
"Java读写ini文件代码示例" Java读写ini文件代码示例是一种常见的文件操作方式,ini文件是一种轻量级的配置文件格式,广泛应用于各种软件和系统中。Java语言可以通过多种方式来读写ini文件,本文将详细介绍Java读写...
本篇我们将深入探讨如何使用Java有效地读取包含中文字符的INI文件,并通过提供的`IniReader.java`源代码进行实例解析。 首先,我们要了解INI文件的基本结构。INI文件由一系列的节(Section)组成,每个节下面可以有...
在Java平台上,处理配置文件是开发过程中的常见任务。...综上所述,Java平台可以通过`ini4j`库轻松地读写INI配置文件,无论是本地还是网络上的文件。合理使用这些功能,可以帮助开发者更高效地管理和维护应用的配置。
在Java编程环境中,有时我们需要处理配置文件,其中INI文件是一种常见的格式,用于存储应用程序的设置和配置信息。`IniEditor`是一个Java库,允许开发者方便地读取、修改和写入INI文件。本文将深入探讨如何使用`...
ini4j是一个轻量级的Java框架,提供了方便的方式来操作INI文件。它支持标准的INI文件结构,包括节(section)、键值对(key-value pairs)和注释。ini4j库不仅能够读取INI文件,还能创建、修改和保存这些文件,为...
在Java中,虽然标准库并未提供直接操作Ini文件的API,但我们可以自定义类来实现 Ini文件的读写功能。这个类通常会依赖于正则表达式来解析和构建Ini文件的内容。 在实现Ini文件操作的Java类时,以下是一些关键知识点...
1. **ini文件格式介绍** `ini`文件是一种轻量级的配置文件格式,主要用于存储键值对数据。通常,每个节(section)以方括号`[]`包围,如`[SectionName]`,并在其中定义若干键值对,例如:`key=value`。这种格式易于...
例如,我们可以使用 `ini4j` 库,这是一个轻量级的 Java INI 文件解析库,提供了一套完整的 API 来读写 INI 文件。 3. 引入 ini4j 库 在项目中引入 `ini4j` 库,可以通过 Maven 添加依赖: ```xml <groupId>...
- 如果不想依赖第三方库,可以使用`java.io`和`java.util`包中的类自定义读写INI文件。通过`BufferedReader`和`BufferedWriter`读写文件,利用`HashMap`或`Properties`对象来存储和操作配置信息。 7. **性能和效率...
在Java中,由于标准库并未提供直接处理Ini文件的API,因此开发者通常需要自定义类或使用第三方库来实现Ini文件的操作。本篇文章将深入探讨如何用Java实现一个 Ini文件处理类,主要涉及以下几个知识点: 1. **Ini...
首先,Java标准库并没有直接支持读写INI文件的API,因此我们需要依赖第三方库或者自定义方法来实现这一功能。在给定的链接中,博主提供了有关如何读取INI文件的一个实例,但具体内容由于链接无法直接访问,我们可以...
`ini4j`提供了方便的API,使得在Java应用程序中读写、修改INI文件变得简单。 **描述解析:** "基于Java的INI文件操作类库 [ini4j].zip" 进一步确认了这个压缩包内容是`ini4j`类库的源代码或二进制文件。`[ini4j]`...
本篇文章将详细介绍如何使用Java读写ini配置文件。 1. **理解ini文件格式** ini文件由一系列节(section)和键值对组成。节以方括号`[]`包围,如`[SectionName]`;键值对以等号`=`分隔,如`key=value`。一个简单的...
在Java中,`ini4j`是一个轻量级的开源库,专门用于读写和处理INI文件。这个类库使得开发者能够方便地在Java项目中管理和操作INI配置文件,而无需手动解析文件内容。 `ini4j`库的核心功能包括: 1. **读取INI文件**...
创建一个公共静态类,目的是为了封装读写INI文件的操作,使其在程序中易于调用。以下是一个简单的C#示例: ```csharp using System.IO; using System.Collections.Generic; public static class IniFileHandler {...
1. 在读写ini文件时,需确保文件权限允许读写操作。 2. 写入ini文件时,应确保文件对象正确关闭以保存更改。 3. 对于多线程环境,需要考虑同步控制以防止数据冲突。 4. 为保持文件的清晰,避免在ini文件中存储过于...