From 62a1985db3005d5310784501c9f4d241137a0530 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Tue, 4 Jun 2019 12:23:40 +0300 Subject: [PATCH] fix buffered file (cherry picked from commit 3010f10b43cf309421a66a7dd2019d55d04c9f59) --- src/main/java/dmx/lwjake2/UnpackLoader.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/dmx/lwjake2/UnpackLoader.java b/src/main/java/dmx/lwjake2/UnpackLoader.java index ec1a9da..d8ffac0 100644 --- a/src/main/java/dmx/lwjake2/UnpackLoader.java +++ b/src/main/java/dmx/lwjake2/UnpackLoader.java @@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j; import javax.annotation.Nullable; import java.io.*; import java.nio.ByteBuffer; +import java.nio.channels.FileChannel; import java.nio.file.Files; import java.nio.file.Paths; @@ -54,12 +55,18 @@ public class UnpackLoader { @Nullable public static ByteBuffer loadFileAsByteBuffer(String path) { - byte[] bytes = loadFile(path); - if (bytes == null) { + File file = getFile(path); + if (file == null) { return null; } - return ByteBuffer.wrap(bytes); + try { + RandomAccessFile raf = new RandomAccessFile(file, "r"); + return raf.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length()); + } catch (IOException e) { + log.error("Can't load file '{}' as ByteBuffer: {}", file.getPath(), e.getMessage()); + return null; + } } public static RandomAccessFile loadFileAsRAF(String path) {