如何从映射文件中读取ASCII字符并将其存储到字符串中?

时间:2020-03-21 15:20:23

标签: java arrays string byte memory-mapped-files

我有一个文本文件,该文件在映射文件中的第9到24位有16个ASCII字符。

Text File

我正在尝试将文本检索到String变量中。

我尝试过:

        // MAPPED FILE DATA
        private RandomAccessFile file;
        private static int fileSize = Integer.MAX_VALUE;
        MappedByteBuffer fileBuffer;

        // OPEN MAPPED MEMORY FILE
        file = new RandomAccessFile("myfile.txt", "rw");

        // ASSIGN BUFFER
        fileBuffer = file.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, fileSize);

        // READ HEADER
        byte[] byteExchange = new byte[16]; 
        fileBuffer.position(8);
        fileBuffer.get(byteExchange, 0, 16);

        System.out.print("### ");
        System.out.println(byteExchange);
        System.out.println(byteExchange.toString());
        System.out.println(byteExchange[0]);

但是我明白了:

### [B@65ab7765
[B@65ab7765
67

我在期待

### CME
CME
67

似乎单个字节已正确检索,但是我无法理解如何将字节数组转换为有效的字符串。

我的目标是要从文件中读取一个字符串变量,该变量最多包含16个字符(在此示例中仅为“ CME”)。

string myString;
myString = whatever(byteExchange);
System.out.println(myString)

Outputs:

CME

0 个答案:

没有答案