|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
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("[;]")[0];
????Patternp;
????Matcherm;
????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="";
???????returnvalue;
??????}
?????}elseif(strArray.length==2){
??????value=strArray[0].trim();
??????if(value.equalsIgnoreCase(variable)){
???????value=strArray[1].trim();
???????returnvalue;
??????}
?????}elseif(strArray.length>2){
??????value=strArray[0].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(";")[1];
????else
?????remarkStr="";
????strLine=allLine.split(";")[0];
????Patternp;
????Matcherm;
????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+"
";
??????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文件中的“;”为正文符,而不是辨认“#”为正文符。
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点, |
|