Android,读取和操作字节的方法?

时间:2011-03-21 11:57:06

标签: java android file-io assets

我正在尝试以字节为单位读取XML文件并对其进行解码。

我遇到的问题是将字节缓冲区加入到字符串结果中。

如果我这样做:

output += new String(buffer);

文本在加入时已损坏。我需要插入什么样的角色来正确加入它们?

我是否正确地做到了这一点?

我使用以下代码循环访问文件并在存储之前操作缓冲区:

 buffer = new byte[1024];

    try {
            is = getBaseContext().getAssets().open("xml/xml.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }

        int r = 0;

        try {
            while(r != -1)
            {

                for(int i=0;i<buffer.length;i++)
                {
                    r = is.read(buffer);
                }

                deobfuscate(buffer);
                output += new String(buffer);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

试试这段代码,

buffer = new byte[1024];

try {
        is = getBaseContext().getAssets().open("xml/xml.xml");
    } catch (IOException e) {
        e.printStackTrace();
    }

    int count = 0, bytesRead = 0;;
    ByteArrayOutputStream bytestream = new ByteArrayOutputStream(1024 * 2);
    try {
          bytesRead = is.read(buffer);

          while(bytesRead != -1)
          {
            deobfuscate(buffer);
            bytestream.write(buffer, 0, bytesread);
            count += bytesRead;
            bytesRead = is.read(buffer);
          }
    } catch (IOException e) {
        e.printStackTrace();
    }
    String output = new String(bytestream.tobyteArray());