我使用字节数组来存储文件系统之外的文本文件。
看起来像这样:
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变量中不是最好的方法......)
答案 0 :(得分:0)
一个简单的方法是使用base64 - 但是在类初始化时执行转换,所以你只需要点击一次性能:
private static final byte[] CDRIVES = Base64.decode("YOURBASE64HERE");
或者如果它是真正的文本,请以类似的方式执行一次编码:
private static final byte[] CDRIVES =
"Your constant text here".getBytes(StandardCharsets.UTF_8);
同样,性能命中恰好一次,然后您可以多次使用这些字节。如果在类初始化时将文本编码为字节的成本确实是您的瓶颈,我会感到非常惊讶。