读书人

施用BinCompiler将资源文件打包成二进

发布时间: 2012-09-28 00:03:35 作者: rapoo

使用BinCompiler将资源文件打包成二进制文件

?

点击create按钮,即在我们制定的位置产生一个bin文件,当然在这个bin文件所在目录还会产生一个index.txt文件。我们在程序中读取这些资源时,需要使用这个index.txt。index.txt文件如下所示:

    FNameIndexPosSizeA_04.png004141A_03.png141453802A_02.png279513813A_01.png3117683959

    接下来我们可以使用BinReader.java文件中的两个方法来读取这些资源文件了。

    代码清单:BinReader.java

      /******************************************************************************* * Reads a file from the BIN file and return data as a byte buffer *******************************************************************************/public byte[] readFile(String binfile, int pos){byte buffer[];int len;try {InputStream is = Class.getClass().getResourceAsStream("/" + binfile);is.skip(pos);len = (is.read() & 0xFF) << 24;len |= (is.read() 0xFF) << 16;len |= (is.read() & 0xFF) << 8;len |= (is.read() & 0xFF);buffer = new byte[len];is.read(buffer, 0, buffer.length);is.close();is = null;System.gc();} catch (Exception e) {buffer = null;e.printStackTrace();System.gc();return null;}return buffer;}/******************************************************************************* * Reads a file from the BIN file and return data as an Image *******************************************************************************/public Image readImage(String binfile, long pos){byte buffer[];long len;try {InputStream is = Class.getClass().getResourceAsStream("/" + binfile);is.skip(pos);len = (is.read() & 0xFF) << 24;len |= (is.read() 0xFF) << 16;len |= (is.read() & 0xFF) << 8;len |= (is.read() & 0xFF);buffer = new byte[len];is.read(buffer, 0, buffer.length);is.close();is = null;System.gc();} catch (Exception e) {buffer = null;e.printStackTrace();System.gc();return null;}return Image.createImage(buffer, 0, buffer.length);}

      可以看出,这两个方法都只需要传入bin文件名和图片对应的pos,pos值就在我们上面所说的index.txt文件中去找对应的就可以了。?

      例如我们读取一个图片

        Image image = readimage("images.bin", 0);

        可以看出,我们传入的pos的值是0,对应index.txt中就应该是A_04.png。?

        很简单,可以直接使用就是了。谢谢大家支持。

读书人网 >移动开发

热点推荐