`
bdk82924
  • 浏览: 565151 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JAVA读写INI文件,亲测

 
阅读更多

代码如下:

 

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());
        }

    }

}

 

分享到:
评论
1 楼 devcang 2013-12-19  
不是太好用。

section不能是空串,不能和Properties兼容。

相关推荐

    Java 读写Ini文件

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

    JAVA使用JNI读写INI文件

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

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

    在这个Java项目中,开发者创建了一个功能,使得程序能够读取、写入和管理INI文件,同时结合了Swing组件来提供用户界面,使得用户可以直接在图形界面上进行文件操作。 1. **INI文件结构**: 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文件,并通过提供的`IniReader.java`源代码进行实例解析。 首先,我们要了解INI文件的基本结构。INI文件由一系列的节(Section)组成,每个节下面可以有...

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

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

    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. **性能和效率...

    操作Ini文件的类 java实现

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

    java读取ini文件

    首先,Java标准库并没有直接支持读写INI文件的API,因此我们需要依赖第三方库或者自定义方法来实现这一功能。在给定的链接中,博主提供了有关如何读取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 {...

    ini文件读写

    1. 在读写ini文件时,需确保文件权限允许读写操作。 2. 写入ini文件时,应确保文件对象正确关闭以保存更改。 3. 对于多线程环境,需要考虑同步控制以防止数据冲突。 4. 为保持文件的清晰,避免在ini文件中存储过于...

Global site tag (gtag.js) - Google Analytics