一个文件里面放置了图象,菜单等信息。进行读取,有兴趣的近来看看,有什么好的建议的望指点。

AbeiXu 2004-04-16 01:52:51
读取

String[] strings = AMBugs.getResource("\1\4\5\13\16\23\24\25\26\27\30\31\32\33\34\35\36\37");

片段代码如下:

protected static String[] getResource(String resourceNumbersString) throws
Exception {

byte flag = (byte) ( (theFlags >> 60) & 7);
if ( (flag >> 2 & 1) == 0) {
DataInputStream dis = null;
try {
int lastPos;

InputStream is = THEMidlet.getClass()
.getResourceAsStream("d.txt");

dis = new DataInputStream(is);

if (flag == 0) {

dis.skip(dis.readUnsignedShort() + 2);

flag = (byte) (dis.read() & 3);
if (flag == 3) {
theUIEncoding = dis.readUTF();
}
theFlags = theFlags | (long) flag << 60;
dis.close();
dis = null;
is = null;

String[] strings = getResource(resourceNumbersString);
return strings;
}

StringBuffer resourceNumbers = AMBugs.theStringBuffer;

resourceNumbers.delete(0, resourceNumbers.length())
.append(resourceNumbersString);

int stringsAmount = resourceNumbers.length();

int curResNumber = resourceNumbers.charAt(0);

int curAbsPos = (curResNumber + 1) * 2;

dis.skip(curAbsPos);

int curStringPos = dis.readUnsignedShort() + 4 + curAbsPos;
int nextStringPos;

curResNumber++;

lastPos = (resourceNumbers.charAt(stringsAmount - 1) + 1)
* 2 + 4;

int maxStringLength = 0;
int curStringLength;

int skip;
int i = 0;

stringsAmount = stringsAmount * 2 - 1;

while (true) {

resourceNumbers.insert(i++, (char) (curStringPos
- lastPos));

nextStringPos = dis.readUnsignedShort() + 4 +
(curResNumber + 1) * 2;

curResNumber++;

lastPos = nextStringPos;

curStringLength = nextStringPos - curStringPos;
maxStringLength = Math.max(maxStringLength, curStringLength);

resourceNumbers.setCharAt(i++, (char) curStringLength);

if (i < stringsAmount) {
skip = curResNumber;
curResNumber = resourceNumbers.charAt(i);
skip = (curResNumber - skip) * 2;

if (skip < 0) {
curStringPos = nextStringPos;
}
else {
if (skip > 0) {
dis.skip(skip);
}

curStringPos = dis.readUnsignedShort() + 4 +
(curResNumber + 1) * 2;

}
curResNumber++;
}
else {
break;
}
}

stringsAmount = resourceNumbers.length();

byte[] buf = new byte[maxStringLength];
String[] strings = new String[stringsAmount / 2];

for (i = 0; i < stringsAmount; i++) {
dis.skip(resourceNumbers.charAt(i++));

lastPos = resourceNumbers.charAt(i);
if (lastPos != 0) {
if (flag == 1) {
strings[i / 2] = dis.readUTF();
}
else {
dis.read(buf, 0, lastPos);

if (theUIEncoding == null) {
strings[i / 2] = new String(buf, 0, lastPos);
}
else {
strings[i / 2] = new String(buf, 0, lastPos,
theUIEncoding);
}
}
}
else {
strings[i / 2] = "";
}
}

return strings;

}
catch (Exception ignored) {
throw new Exception("Resource Bundle Exception");
}
finally {
try {
if (dis != null) {
dis.close();
}
}
catch (Throwable ignored) {}
}
}
else {
return null;
}
}


请教加交流,有兴趣的聊聊。
supcc@hotmail.com
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
changzz 2004-04-21
  • 打赏
  • 举报
回复
up
AbeiXu 2004-04-21
  • 打赏
  • 举报
回复

这东西也没什么意思,只是游戏不是我们这边写的.
也够郁闷的,那家伙变态,把所有的东西全写进txt文件.
要移植这个游戏.我估计只有重写了.

好无聊~~~


大家也没什么兴趣!结帖了!

谢谢!


feida424 2004-04-16
  • 打赏
  • 举报
回复
学习中!顶!
怎样通过图片的路径来生成一个Image对象?图片的位置应该如何设置,语句应该怎样写?
请指点!
filippo1980 2004-04-16
  • 打赏
  • 举报
回复
先看看!

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧