如何在Java中初始化字节数组期间避免单个转换为字节

时间:2015-07-30 07:27:02

标签: java file casting stream bytearray

我使用字节数组来存储文件系统之外的文本文件。

看起来像这样:

private static final byte[] CDRIVES = new byte[] {
        (byte)0xe0, 0x4f, (byte)0xd0, 0x20, (byte)0xea, 0x3a, 0x69, 0x10,
        (byte)0xa2, (byte)0xd8, 0x08, 0x00, 0x2b, 0x30, 0x30, (byte)0x9d,
        (byte)0xba, (byte)0x8a, 0x0d, 0x45, 0x25, (byte)0xad, (byte)0xd0, 0x11,
        (byte)0x98, (byte)0xa8, 0x08, 0x00, 0x36, 0x1b, 0x11, 0x03,
        (byte)0x80, 0x53, 0x1c, (byte)0x87, (byte)0xa0, 0x42, 0x69, 0x10,
        (byte)0xa2, (byte)0xea, 0x08, 0x00, 0x2b, 0x30, 0x30, (byte)0x9d
        ...
        ...
        ...
        };

有没有办法避免转换为(字节)以获得更好的视觉解释?

我不介意使用其他数据类型,但我需要能够构建一个InputStream,并尽可能以最快的方式完成。 (例如,将文本文件存储到String变量中不是最好的方法......)

1 个答案:

答案 0 :(得分:0)

一个简单的方法是使用base64 - 但是在类初始化时执行转换,所以你只需要点击一次性能:

private static final byte[] CDRIVES = Base64.decode("YOURBASE64HERE");

或者如果它是真正的文本,请以类似的方式执行一次编码:

private static final byte[] CDRIVES =
    "Your constant text here".getBytes(StandardCharsets.UTF_8);

同样,性能命中恰好一次,然后您可以多次使用这些字节。如果在类初始化时将文本编码为字节的成本确实是您的瓶颈,我会感到非常惊讶。