JAVA教程之用java读写ini设置文件
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。???在java中,设置文件一样平常次要是两种情势:xml文件大概property文件。但年夜部分人都习气利用ini文件,并且ini文件的分节和正文功效,比起xml,也是易懂易用的。???在vc中类库中有读写ini文件的尺度函数。在dephi或其他言语中,也能够用windows的api函数来读写ini文件。但在java中仿佛没有现成的类和办法可供利用。固然java能够经由过程加载dll文件的办法来挪用windows的api,但总以为不敷正宗。
???因而本人写了个读写ini设置文件的类,供人人参考。
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
?*这是个设置文件操纵类,用来读取和设置ini设置文件
?*@author由月
?*@version2004-08-18
?*/
publicfinalclassConfigurationFile{
?/**
?*从ini设置文件中读取变量的值
?*@paramfile设置文件的路径
?*@paramsection要猎取的变量地点段称号
?*@paramvariable要猎取的变量称号
?*@paramdefaultValue变量称号不存在时的默许值
?*@return变量的值
?*@throwsIOException抛出文件操纵大概呈现的io非常
?*/
?publicstaticStringgetProfileString(
??Stringfile,
??Stringsection,
??Stringvariable,
??StringdefaultValue)
??throwsIOException{
??StringstrLine,value="";
??BufferedReaderbufferedReader=newBufferedReader(newFileReader(file));
??booleanisInSection=false;
??try{
???while((strLine=bufferedReader.readLine())!=null){
????strLine=strLine.trim();
????strLine=strLine.split("[;]");
????Patternp;
????Matcherm;
????p=Pattern.compile("");
????m=p.matcher((strLine));
????if(m.matches()){
?????p=Pattern.compile("");
?????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.trim();
??????if(value.equalsIgnoreCase(variable)){
???????value="";
???????returnvalue;
??????}
?????}elseif(strArray.length==2){
??????value=strArray.trim();
??????if(value.equalsIgnoreCase(variable)){
???????value=strArray.trim();
???????returnvalue;
??????}
?????}elseif(strArray.length>2){
??????value=strArray.trim();
??????if(value.equalsIgnoreCase(variable)){
???????value=strLine.substring(strLine.indexOf("=")+1).trim();
???????returnvalue;
??????}
?????}
????}
???}
??}finally{
???bufferedReader.close();
??}
??returndefaultValue;
?}
?/**
?*修正ini设置文件中变量的值
?*@paramfile设置文件的路径
?*@paramsection要修正的变量地点段称号
?*@paramvariable要修正的变量称号
?*@paramvalue变量的新值
?*@throwsIOException抛出文件操纵大概呈现的io非常
?*/
?publicstaticbooleansetProfileString(
??Stringfile,
??Stringsection,
??Stringvariable,
??Stringvalue)
??throwsIOException{
??StringfileContent,allLine,strLine,newLine,remarkStr;
??StringgetValue;
??BufferedReaderbufferedReader=newBufferedReader(newFileReader(file));
??booleanisInSection=false;
??fileContent="";
??try{
???while((allLine=bufferedReader.readLine())!=null){
????allLine=allLine.trim();
????if(allLine.split("[;]").length>1)
?????remarkStr=";"+allLine.split(";");
????else
?????remarkStr="";
????strLine=allLine.split(";");
????Patternp;
????Matcherm;
????p=Pattern.compile("");
????m=p.matcher((strLine));
????if(m.matches()){
?????p=Pattern.compile("");
?????m=p.matcher(strLine);
?????if(m.matches()){
??????isInSection=true;
?????}else{
??????isInSection=false;
?????}
????}
????if(isInSection==true){
?????strLine=strLine.trim();
?????String[]strArray=strLine.split("=");
?????getValue=strArray.trim();
?????if(getValue.equalsIgnoreCase(variable)){
??????newLine=getValue+"="+value+""+remarkStr;
??????fileContent+=newLine+"
";
??????while((allLine=bufferedReader.readLine())!=null){
???????fileContent+=allLine+"
";
??????}
??????bufferedReader.close();
??????BufferedWriterbufferedWriter=
???????newBufferedWriter(newFileWriter(file,false));
??????bufferedWriter.write(fileContent);
??????bufferedWriter.flush();
??????bufferedWriter.close();
??????returntrue;
?????}
????}
????fileContent+=allLine+"
";
???}
??}catch(IOExceptionex){
???throwex;
??}finally{
???bufferedReader.close();
??}
??returnfalse;
?}
?/**
?*程序测试
?*/
?publicstaticvoidmain(String[]args){
??//Stringvalue=Config.getProfileString("sysconfig.ini","Option","OracleDB","default");
??//System.out.println(value);
??try{
???System.out.println(ConfigurationFile.setProfileString("d:/1.ini","Settings","SampSize","111"));
??}catch(IOExceptione){
???System.out.println(e.toString());
??}
??
?}
}
这个类能够读和写ini文件,不外先申明一点:它辨认ini文件中的“;”为正文符,而不是辨认“#”为正文符。
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点, 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Java是一种计算机编程语言,拥有跨平台、面向对java 是一种将安全性(Security)列为第一优先考虑的语言 是一种突破用户端机器环境和CPU 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 是一种为 Internet发展的计算机语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
页:
[1]