选择显示字体大小

脚本引擎之--读取ini配置文件

为什么要使用j2me来读取ini(配置)文件呢?在单机版游戏当中,使用ini文件来读取相关命令实属多余,但是在编写网络游戏时,由客户端读取从服务器传来的ini文件流就显得相当重要了。因为手机游戏客户端是写死的程序,不可能实现像pc网络游戏那样进行下载客户端的升级。
因此,将一些经常需要改动的游戏元素,如:npc属性,地图属性等保存到服务器端,在改动的时候只需要简单地改变服务器端保存的ini文件内容即可,而手机客户端只需要解析由服务器传过来的ini文件流。
import java.io.*;
import java.util.*;
public class configfile
{
private string scon;
private string str = null;
//构造函数
public configfile()
{
}
/**
* 功能: 读取文件数据
* @param sfile string ini文件名
* @param sindex string []中的内容
* @param scontent string 内容索引
* @return string 内容索引的值(string)
* @throws ioexception
*/
public string readfile(string sfile, string sindex, string scontent) throws
ioexception
{
inputstream input;
vector v1 = new vector(); //sindex的值
vector v2 = new vector(); //scontent的值
int p, q, l = 0, i; //保存各字符的索引
string argindex1 = ""; //中间值
string num1 = ""; //中间值
input = getclass().getresourceasstream(sfile);
str = this.asciitoutf(input);
//将全部字符串分别保存到两个string对象中
string strone = str;
//功能:将流中"["和"]"中的内容全部取出并存放到vector中
//(char)91和(char)93分别返回"["和"]"
while ((p = str.indexof("[")) != -1 &&
(q = str.indexof("]")) != -1)
{
//num1=str.substring(p+1,q);
v1.addelement(str.substring(p + 1, q));
str = str.substring(q + 1);
}
//读取sindex下的索引内容
//i循环实现遍历所有"["和"]"中的内容
for (i = 0; i < v1.size(); i++)
&#123;
//检查所遍历的数据是否等于参数sindex的值
if (v1.elementat(i).equals(sindex) == true)
&#123;
//strone.indexof(sindex)得到全部数据中第一个sindex的索引
//+sindex.length()后,得到sindex最后一个字节的索引
//+2后,去除字符"]"和回车符,但保留换行符
//利用substring将换行符前的字符全部删除并保存到argindex1中
argindex1 = strone.substring(strone.indexof(sindex) + sindex.length() +
2);
if ((p = argindex1.indexof("[")) != -1)
&#123;
//从新字符串的第一个字节开始,读到"["的前两个字节为止,即回车符
num1 = argindex1.substring(0, p - 1);
//r返回换行符的索引值,s返回"="号的索引值,l返回回车符的索引
while ((p = num1.indexof((char)10)) != -1 &&
(q = num1.indexof("=")) != -1 &&
(l = num1.indexof((char)13)) != -1)
&#123;
//从换行符后的第一个字节开始读取直到"="前面的字节为止
//num3=num1.substring(r+1,s);
v2.addelement(num1.substring(p + 1, q));
//截取从换行符开始到后面的所有字符的新字符串
num1 = num1.substring(l + 1);
&#125;
//读取scontent下的内容
//v2.size()返回当前[]下的行数
for (i = 0; i < v2.size(); i++)
&#123;
//检查所遍历的数据是否等于参数scontent的值
if (v2.elementat(i).equals(scontent) == true)
&#123;
//strtwo.indexof(scontent)找出scontent的索引
//+scontent.length()返回scontent最后一个字符的索引
//获得之后所有字符组成新的字符集
num1 = argindex1.substring(argindex1.indexof(scontent) +
scontent.length());
if ((p = num1.indexof("=")) != -1 &&
(q = num1.indexof((char)13)) != -1)
&#123;
//截取"="后面和回车符前的字符串
scon = num1.substring(p + 1, q);
&#125;
&#125;
&#125;
&#125;
break;
&#125;
&#125;
return scon;
&#125;
//注意这个地方很重要,这里是转换中文的处理。如果没有
//这个函数,如果文件中包含中文将不能正确执行
private string asciitoutf(inputstream inputstream)
&#123;
byte[] mydata = null;
string strdata = null;
try
&#123;
bytearrayoutputstream bytearray = new bytearrayoutputstream();
int ch = 0;
while ((ch = inputstream.read()) != -1)
&#123;
bytearray.write(ch);
&#125;
//将bytearray中的字节全部输入到mydata中
//bytearray.size()为字节长度
for (int i = 0; i < bytearray.size(); i++)
&#123;
mydata = bytearray.tobytearray();
&#125;
strdata = new string(mydata, "utf-8");
&#125;
catch (exception e)
&#123;&#125;
return strdata;
&#125;
&#125;
可以读取的文件示例:
npc.ini
---------------------------
[1]
name=许伟东
sex=男
[]
当然,这只是实现在j2me中脚本引擎的第一步,后面的我会慢慢写。
同时,我已经将需要注意的地方写了注释,如果您对这方面很感兴趣,可以联系我。
blog : http:www.sf.org.cn/blog/xuweidong/index.html


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons