`
yuanzher
  • 浏览: 30725 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 读写ini文件

    博客分类:
  • java
阅读更多

转自:http://blog.csdn.net/baggio328/article/details/1780707

在java中,配置文件一般主要是两种形式:xml文件或者property文件。但大部分人都习惯使用ini文件,而且ini文件的分节以及注释功能,比起xml,也是易懂易用的。 在vc中类库中有读写ini文件的标准函数。在dephi或其他语言中,也可以用windows的api函数来读写ini文件。但在java中似乎没有现成的类和方法可供使用。虽然java可以通过加载dll文件的方法来调用windows的api,但总觉得不够正宗。

package mytools; 

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 由月 
* @version 2004-08-18 
*/ 
public final class ConfigurationFile ......{ 
/** *//** *//** *//** 
* 从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, value = ""; 
BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
boolean isInSection = false; 
try ......{ 
while ((strLine = bufferedReader.readLine()) != null) ......{ 
strLine = strLine.trim(); 
strLine = strLine.split("[;]")[0]; 
Pattern p; 
Matcher m; 
p = Pattern.compile("file://[//s*.*//s*//]"); 
m = p.matcher((strLine)); 
if (m.matches()) ......{ 
p = Pattern.compile("file://[//s*" + section + "file://s*//]"); 
m = p.matcher(strLine); 
if (m.matches()) ......{ 
isInSection = true; 
} else ......{ 
isInSection = false; 
} 
} 
if (isInSection == true) ......{ 
strLine = strLine.trim(); 
String[] strArray = strLine.split("="); 
if (strArray.length == 1) ......{ 
value = strArray[0].trim(); 
if (value.equalsIgnoreCase(variable)) ......{ 
value = ""; 
return value; 
} 
} else if (strArray.length == 2) ......{ 
value = strArray[0].trim(); 
if (value.equalsIgnoreCase(variable)) ...{ 
value = strArray[1].trim(); 
return value; 
} 
} else if (strArray.length > 2) ...{ 
value = strArray[0].trim(); 
if (value.equalsIgnoreCase(variable)) ...{ 
value = strLine.substring(strLine.indexOf("=") + 1).trim(); 
return value; 
} 
} 
} 
} 
} 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,strLine, newLine, remarkStr; 
String getValue; 
BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); 
boolean isInSection = false; 
fileContent = ""; 
try ...{ 

while ((allLine = bufferedReader.readLine()) != null) ...{ 
allLine = allLine.trim(); 
if (allLine.split("[;]").length > 1) 
remarkStr = ";" + allLine.split(";")[1]; 
else 
remarkStr = ""; 
strLine = allLine.split(";")[0]; 
Pattern p; 
Matcher m; 
p = Pattern.compile("file://[//s*.*//s*//]"); 
m = p.matcher((strLine)); 
if (m.matches()) ...{ 
p = Pattern.compile("file://[//s*" + section + "file://s*//]"); 
m = p.matcher(strLine); 
if (m.matches()) ...{ 
isInSection = true; 
} else ...{ 
isInSection = false; 
} 
} 
if (isInSection == true) ...{ 
strLine = strLine.trim(); 
String[] strArray = strLine.split("="); 
getValue = strArray[0].trim(); 
if (getValue.equalsIgnoreCase(variable)) ...{ 
newLine = getValue + " = " + value + " " + remarkStr; 
fileContent += newLine + " "; 
while ((allLine = buffer
edReader.readLine()) != null) ...{ 
fileContent += allLine + " "; 
} 
bufferedReader.close(); 
BufferedWriter bufferedWriter = 
new BufferedWriter(new FileWriter(file, false)); 
bufferedWriter.write(fileContent); 
bufferedWriter.flush(); 
bufferedWriter.close(); 

return true; 
} 
} 
fileContent += allLine + " "; 
} 
}catch(IOException ex)...{ 
throw ex; 
} finally ...{ 
bufferedReader.close(); 
} 
return false; 
} 
/** *//** 
* 程序测试 
*/ 
public static void main(String[] args) ...{ 
//String value = Config.getProfileString("sysconfig.ini", "Option", "OracleDB", "default"); 
//System.out.println(value); 
try ...{ 
System.out.println(ConfigurationFile.setProfileString("d:/1.ini", "Settings", "SampSize", "111")); 
} catch (IOException e) ...{ 
System.out.println(e.toString()); 
} 

} 
}

 

分享到:
评论

相关推荐

    Java 读写Ini文件

    以上就是使用Java读写Ini文件的基本方法。在实际项目中,你可能需要根据具体需求进行调整,比如处理异常、文件不存在的情况,或者在读写操作前后进行备份等。确保始终处理好错误和异常,以提高代码的健壮性。

    java读写ini文件

    本项目就是一个关于如何使用Java读写INI文件的小例子。 首先,我们需要一个第三方库,如JIni库,它可以方便地进行INI文件操作。在这个项目中,相关jar包可能就是`JIni.jar`,它位于根目录下的`ini`文件夹内的`bin`...

    Java读写ini文件代码示例

    "Java读写ini文件代码示例" Java读写ini文件代码示例是一种常见的文件操作方式,ini文件是一种轻量级的配置文件格式,广泛应用于各种软件和系统中。Java语言可以通过多种方式来读写ini文件,本文将详细介绍Java读写...

    Java写的关于INI文件读写,以及其它操作

    在这个Java项目中,开发者创建了一个功能,使得程序能够读取、写入和管理INI文件,同时结合了Swing组件来提供用户界面,使得用户可以直接在图形界面上进行文件操作。 1. **INI文件结构**: INI文件由键值对组成,...

    JAVA使用JNI读写INI文件

    JAVA使用JNI读写INI文件的实例。 JAVA本身并没有读写INI文件的现成方法,有些人自己编写方法来读写INI文件,但是这样的方法或多或少的存在着一些问题。此示例旨在利用本地的WIN32API函数来读写INI文件,这样可以保证...

    java平台读写ini配置文件(可读网络配置文件)

    在Java平台上,处理配置文件是开发过程中的常见任务。...综上所述,Java平台可以通过`ini4j`库轻松地读写INI配置文件,无论是本地还是网络上的文件。合理使用这些功能,可以帮助开发者更高效地管理和维护应用的配置。

    用java读取ini文件(支持中文)

    本篇我们将深入探讨如何使用Java有效地读取包含中文字符的INI文件,并通过提供的`IniReader.java`源代码进行实例解析。 首先,我们要了解INI文件的基本结构。INI文件由一系列的节(Section)组成,每个节下面可以有...

    java使用IniEditor读写INI文件inieditor源码

    在Java编程环境中,有时我们需要处理配置文件,其中INI文件是一种常见的格式,用于存储应用程序的设置和配置信息。`IniEditor`是一个Java库,允许开发者方便地读取、修改和写入INI文件。本文将深入探讨如何使用`...

    ini4j读取ini文件类

    ini4j是一个轻量级的Java框架,提供了方便的方式来操作INI文件。它支持标准的INI文件结构,包括节(section)、键值对(key-value pairs)和注释。ini4j库不仅能够读取INI文件,还能创建、修改和保存这些文件,为...

    操作ini文件的类 java实现

    在Java中,虽然标准库并未提供直接操作Ini文件的API,但我们可以自定义类来实现 Ini文件的读写功能。这个类通常会依赖于正则表达式来解析和构建Ini文件的内容。 在实现Ini文件操作的Java类时,以下是一些关键知识点...

    android项目中读取ini配置文件

    1. **ini文件格式介绍** `ini`文件是一种轻量级的配置文件格式,主要用于存储键值对数据。通常,每个节(section)以方括号`[]`包围,如`[SectionName]`,并在其中定义若干键值对,例如:`key=value`。这种格式易于...

    java ini.java操作ini文档

    例如,我们可以使用 `ini4j` 库,这是一个轻量级的 Java INI 文件解析库,提供了一套完整的 API 来读写 INI 文件。 3. 引入 ini4j 库 在项目中引入 `ini4j` 库,可以通过 Maven 添加依赖: ```xml <groupId>...

    java ini配置文件读取

    - 如果不想依赖第三方库,可以使用`java.io`和`java.util`包中的类自定义读写INI文件。通过`BufferedReader`和`BufferedWriter`读写文件,利用`HashMap`或`Properties`对象来存储和操作配置信息。 7. **性能和效率...

    java读取ini文件

    首先,Java标准库并没有直接支持读写INI文件的API,因此我们需要依赖第三方库或者自定义方法来实现这一功能。在给定的链接中,博主提供了有关如何读取INI文件的一个实例,但具体内容由于链接无法直接访问,我们可以...

    操作Ini文件的类 java实现

    在Java中,由于标准库并未提供直接处理Ini文件的API,因此开发者通常需要自定义类或使用第三方库来实现Ini文件的操作。本篇文章将深入探讨如何用Java实现一个 Ini文件处理类,主要涉及以下几个知识点: 1. **Ini...

    基于Java的INI文件操作类库 ini4j.zip

    `ini4j`提供了方便的API,使得在Java应用程序中读写、修改INI文件变得简单。 **描述解析:** "基于Java的INI文件操作类库 [ini4j].zip" 进一步确认了这个压缩包内容是`ini4j`类库的源代码或二进制文件。`[ini4j]`...

    读写ini配置文件

    本篇文章将详细介绍如何使用Java读写ini配置文件。 1. **理解ini文件格式** ini文件由一系列节(section)和键值对组成。节以方括号`[]`包围,如`[SectionName]`;键值对以等号`=`分隔,如`key=value`。一个简单的...

    INI文件操作类库 [ini4j].7z

    在Java中,`ini4j`是一个轻量级的开源库,专门用于读写和处理INI文件。这个类库使得开发者能够方便地在Java项目中管理和操作INI配置文件,而无需手动解析文件内容。 `ini4j`库的核心功能包括: 1. **读取INI文件**...

    INI文件的读写 公共静态调用类

    创建一个公共静态类,目的是为了封装读写INI文件的操作,使其在程序中易于调用。以下是一个简单的C#示例: ```csharp using System.IO; using System.Collections.Generic; public static class IniFileHandler {...

    python读写ini文件示例(python读写文件)

    很类似java的properties文件xml文件复制代码 代码如下:db_config.ini[baseconf]host=127.0.0.1port=3306user=rootpassword=rootdb_name=evaluting_sys[concurrent]processor=20 对应的python代码 复制代码 代码如下:...

Global site tag (gtag.js) - Google Analytics