用java读写ini配置文件

30岁高薪转行鸿蒙,只因我做了这3件事 今天已经是2022开工第二周了,你们的个人职业规划做好了吗? 之所以这么说,是因为老王最近收到不少同学的倾诉,尤其是30岁以上的同学,想转行IT又不知道该怎么做?转了又担心发展前景不如预期,年龄大了记不住事情,承受不了强大的工作压力...... ​看得出来,大家都是脑子一团浆糊,不知道怎么做。 正好也临近春招了,老王就给大家出一期“大龄、零基础转行IT的攻略”。 希望能够帮助到你们,记得看到最后,老王给你们准备了惊喜福利。 着急的同学,可以关注老王,每一位新朋友,我都准备了【鸿蒙工 阅读详情
在java中,配置文件一般主要是两种形式:xml文件或者property文件。但大部分人都习惯使用ini文件,而且ini文件的分节以及注释功能,比起xml,也是易懂易用的。

    在vc中类库中有读写ini文件的标准函数。在dephi或其他语言中,也可以用windows的api函数来读写ini文件。但在java中似乎没有现成的类和方法可供使用。虽然java可以通过加载dll文件的方法来调用windows的api,但总觉得不够正宗。

    于是自己写了个读写ini配置文件的类,供大家参考。

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("//[//s*.*//s*//]");
    m = p.matcher((strLine));
    if (m.matches()) {
     p = Pattern.compile("//[//s*" + section + "//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("//[//s*.*//s*//]");
    m = p.matcher((strLine));
    if (m.matches()) {
     p = Pattern.compile("//[//s*" + section + "//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 + "/r/n";
      while ((allLine = bufferedReader.readLine()) != null) {
       fileContent += allLine + "/r/n";
      }
      bufferedReader.close();
      BufferedWriter bufferedWriter =
       new BufferedWriter(new FileWriter(file, false));
      bufferedWriter.write(fileContent);
      bufferedWriter.flush();
      bufferedWriter.close();

      return true;
     }
    }
    fileContent += allLine + "/r/n";
   }
  }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());
  }
  
 }
}

这个类可以读和写ini文件,不过先说明一点:它识别ini文件中的“;”为注释符,而不是识别“#”为注释符。


作者Blog:http://blog.csdn.net/youyue/





使用Java读写INI配置文件 INIInitial Network Information)配置文件是一种常见的配置文件格式,它以键值对的形式存储配置信息。在Java中,我们可以使用一些库来读取和写入INI配置文件。这是一个简单的示例,演示了如何使用Java读取和写入INI配置文件。方法获取了"Database"节中"Username"和"Password"键的值,并将其打印出来。方法将"Database"节中"Password"键的值修改为"new_password",然后调用。对象,并指定要读取的INI配置文件的路径。 阅读详情

相关推荐

java读写INI文件(附完整源码)

java读写INI文件(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 721

Java读取INI文件详解及案例

通过本文的介绍,我们了解了如何使用Java读取和解析INI文件。通过使用Java标准库或第三方库,我们可以轻松地处理INI文件的配置信息,并根据需要获取特定的属性值。

故事不长丨的博客 3557

Java处理INI配置文件:探究四种高效读取与解析策略

许多第三方库提供了专门针对INI文件格式的解析器,这些库通常提供了更强大的功能和更好的兼容性。除了通用配置库,还有一些专门针对INI文件的Java库,如ini4j。根据项目需求、现有依赖情况、对INI文件复杂度的预期以及对性能、灵活性的要求,您可以选择最适合您的方法来读取INI文件。:使用第三方库通常意味着增加项目依赖,但换来了更强大的功能、更好的错误处理以及对复杂INI文件格式的良好支持。:专门的INI库如ini4j提供了与INI文件格式更紧密的集成,可以直接访问节和键值对,无需进行字符串拼接。

java专栏 1879

Java读取.ini配置文件

在windows系统中常看到后缀名为ini配置文件,我们可以用java程序来读取它,从而进行进一步的处理。.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置,一般用户就用windows提供的各项图形化管理界面就可实现相同的配置了。但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows才能去直接编辑。

weixin_46838336的博客 2007

20岁跟对人,30岁做对事 (第1节:前言)

[size=medium][color=blue]   佛家,有这样一个经典的故事:   从前,有座圆音寺,香火鼎盛。   传说,每日沾受佛光香火,万物生灵都会浸透佛性。一千年前,一只蜘蛛在大殿的横梁上安家,一千年后,便也是一只沾了佛性的蜘蛛了。   某天,佛祖光临圆音寺,看见了横梁上的蜘蛛。   佛祖问:既然已修炼了千年,那我问你,世间最珍贵的是什么   蜘蛛答:...

__fAnCy___ 231

20岁跟对人,30岁做对事(一)

第1节:前言  佛家,有这样一个经典的故事:  从前,有座圆音寺,香火鼎盛。  传说,每日沾受佛光香火,万物生灵都会浸透佛性。一千年前,一只蜘蛛在大殿的横梁上安家,一千年后,便也是一只沾了佛性的蜘蛛了。  某天,佛祖光临圆音寺,看见了横梁上的蜘蛛。  佛祖问:既然已修炼了千年,那我问你,世间最珍贵的是什么  蜘蛛答:世间最珍贵的是“得不到”和“已失去”。  佛祖摇头,随即离开。   又是一个一千年。   佛祖又再光临。  佛祖问:还是一千年前那个问题。世间最珍贵的是什么  蜘蛛答:世间最珍贵的是“得不到”和

ptwhite的专栏 1242

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

程序猿学社的博客 35万+

人生规划书:30岁前一定要做的21件事

30岁前,一定要做的21件事   作者的话 要收获先要播种,成功没有捷径   出版这本书的目的,是给20岁到30岁的年轻人拟定人生发展方针时提供参考。我不敢说书中列举的所有事情我在30岁之前都做过了,否则我不会觉得至今还有遗憾。而且,现在的我如果能重新回到二十几岁,那么我想做且非做不可的事不会只有21件。但人生苦短,所以我在其中挑选了最重要的21件事写出来,希望能帮助年轻人节省一些时间,让他们少走

Jessiecloud的专栏 3665

人生20岁的不努力,会造成自己30岁的恐慌和40岁的无助以及50岁的悔恨。

年轻时的选择和努力,会直接影响未来的状态和生活质量。如果在20岁这个关键的成长阶段缺乏规划和行动,可能会导致后续阶段面临更多的困难和遗憾。人生的起点阶段:奠定基础的关键期:30岁的特点:不努力的后果:40岁的特点:不努力的后果:50岁的特点:不努力的后果:为了避免20岁的不努力导致后续阶段的恐慌、无助和悔恨,可以从以下几个方面入手:“人生20岁的不努力,会造成自己30岁的恐慌和40岁的无助以及50岁的悔恨”,这句话提醒我们:正如一句话所说:“种一棵树最好的时间是十年前,其次是现在。” 无论你现在处于哪个阶段

长风破浪会有时的博客 1060

20-30岁怎么规划自己的人生呢?

20-30岁怎么规划自己的人生呢? 1.做好自己的时间管理 (1)我们的精力是有限的,不可能面面俱到;(2)根据帕累托法则,只有20%重要的事情,会决定80%的结果,所以基于这二点,我们应该把有限的精力集中在20%最重要的事情上,因为这些事情会对未来产生极其重要的影响,值得我们付出80%的精力。 什么方法方向问题,我就不一一举例了,网上有很多很多,找到适合自己的 2. 战略性规划: 黄金10年的2...

weixin_40542544的博客 5221

程序员干到30岁,真的只能转行了么?_程序员30岁真的不能做吗

编程是吃青春饭;程序员干到30岁就干不动了,必须转行。代码机器人的出现,基础程序员将会被大量淘汰;过了30岁,程序员这个职业就是一路下坡。事实上,对于以上4个观点,我只赞同一个,那就是“科技的发展在时刻告诉我们,代码的搬运工们,迟早会被这个行业抛弃。不过关于另外3点,我反而觉得有点胡说,甚至觉得说这些话的人是很不负责任的。?。

shanguicsdn000的博客 2356

18到30岁前该做的事

1,事业永远第一   虽然金钱不是万能的,但没有钱是万万不能的,虽然这句话很俗,但绝对有道理,所以30岁之前,请把你大部分精力放在你的事业上.   2,别把钱看得太重   不要抱怨自己现在工资低,银行存款4位数以下,看不到前途,现在要做的就是努力学习,即使你文凭再高,怎么把理论运用到实践还是需要一个很长的锻炼过程,社会永远是一所最博大的大学,它让你学到的知识远比你在学校学到的重要得多,所以同样,你

liw2007的专栏 596

30岁前男人需要完成的事

1,事业永远第一 虽然金钱不是万能的,但没有钱是万万不能的,虽然这句话很俗 ,但绝对有道理,所以30岁之前,请把你大部分精力放在你的事业上. 2,别把钱看得太重 不要抱怨自己现在工资低,银行存款4位数以下,看不到前途,现在要做的就是努力学习,即使你文凭再高,怎么把理论运用到实践还是需要一个很长的锻炼过程,社会永远是一所最博大的大学,它让你学到的知识远比你在学校学到的重要得多,所以同样

★ 喜欢看海 ★ 4098

30岁之后想转行,可行吗?这20条建议让你少走弯路!_30岁转行

都说三十而立,可眼看着到了意气风发的年龄,却突然意识到自己仍一事无成,甚至连养活自己都是问题。30多岁,大多数人还要开始买房、买车、结婚生子,养家糊口,于是各种压力逼迫之下,就想到了转行,期望可以通过转行实现“财务自由”。不过,俗话说,隔行如隔山,加上要承担各种责任**,转行之路并没有那么轻松。到底要不要转行?该往哪个行业转?怎么快速转成功呢?**关于这些问题,本文梳理了20条建议,或许可以给想转行的人提供一点思路。先来看一条数据。

网络安全学习教程分享 1064

一个程序员30岁以前想做的事

不知不觉已经25岁了,但是依然还无所作为,给自己定了个简单的计划,然后慢慢地去实现。25到30是5年,是个很长的时间了,可以做很多事情。这个5年,我依然是一个程序员,依然写自己的程序,但是生活不应该只是如此,我想做的更多。 骑车去西藏(进行中)  25岁生日那天,叫上小彭去陪我买了单车,下午去成都绕了一圈三环路。酝酿很久,终于在6月3日从成都出发了,不为了别的,就为

编程夜未眠 1万+

程序员到30岁以后怎么办? 年龄越大越面临失业

正值金九银十跳槽季,十一刚过后的你有没有什么新的打算?是随随便便找一份工作凑合到过年还是认真的学习一段时间,为自己积累更多的资源再出发? 但对于30岁的你来说,基本上现在处于上有老下有小的状态,身上可能还背着房贷车贷,压力比较大,对此就需要多方面的考虑了。 今天我在知乎上看到这样一个话题:30岁以上的程序员该何去何从?网友们纷纷就此问题给出了各种不同的见解。 网友说:刚进入公司的时候,就有同...

u013926384的博客 1万+

程序员不要对自己做的20件事

美国社会心理学家费斯汀格有一个很出名的行为理论,被人们称为“费斯汀格法则”:生活中的10%是由发生在你身上的事情组成,而另外的90%则是由你对所发生的事情如何反应所决定。换言之,倘若你做错1件事,你就可能需要做9件事去弥补它,追着错误跑你会越错越远。如果想要改变自己,就请永远不要对自己做以下20件事:

振华OPPO的博客世界 598

中大7名博士生被开除:你不努力的20岁,就是你举步维艰的30岁!

世界上最愚蠢的事,就是在该奋斗的年纪选择安逸! ——题记 作者 | 乔巴 来源 | 富书 1 入学的时候多风光 开除的时候就多狼狈 前几天,在北京参加老乡会,席间听到一件事。 一个老乡的表哥在中山大学读博士,不久前因为完不成学业被校方开除了。 我听了还挺震惊。在我印象里,中大是老牌名校,博士更是金光闪闪,属于典型的“别人家的孩子”。 可是,这么优秀的学生,这么好的学校,竟然被开除,真是哀其不...

CDA数据分析师 477
上一篇: C#实现的18位身份证格式验证算法
下一篇: 精通ejb
gztoby
博客等级 码龄22年 70粉丝 281原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值