diff --git a/core/src/main/scala/com/eed3si9n/jarjarabrams/Shader.scala b/core/src/main/scala/com/eed3si9n/jarjarabrams/Shader.scala index 6ae1103..4d4e794 100644 --- a/core/src/main/scala/com/eed3si9n/jarjarabrams/Shader.scala +++ b/core/src/main/scala/com/eed3si9n/jarjarabrams/Shader.scala @@ -4,6 +4,7 @@ import java.io.{ByteArrayInputStream, InputStream} import java.nio.file.{ Files, Path, StandardOpenOption } import org.pantsbuild.jarjar.{ JJProcessor, _ } import org.pantsbuild.jarjar.util.EntryStruct +import com.eed3si9n.jarjarabrams.Utils.readAllBytes object Shader { def shadeDirectory( @@ -18,7 +19,7 @@ object Shader { newMappings.foreach { case (inputStream, mapping) => val out = dir.resolve(mapping) if (!Files.exists(out.getParent)) Files.createDirectories(out.getParent) - Files.write(out, inputStream.readAllBytes(), StandardOpenOption.CREATE) + Files.write(out, readAllBytes(inputStream), StandardOpenOption.CREATE) } } @@ -63,7 +64,7 @@ object Shader { mappings.map(f => if (f._2.contains('\\')) (f._1, f._2.replace('\\', '/')) else f) val shadedInputStreams = sanitizedMappings.flatMap { f => val entry = new EntryStruct - entry.data = f._1.readAllBytes() + entry.data = readAllBytes(f._1) entry.name = f._2 entry.time = -1 entry.skipTransform = false diff --git a/core/src/main/scala/com/eed3si9n/jarjarabrams/Utils.scala b/core/src/main/scala/com/eed3si9n/jarjarabrams/Utils.scala new file mode 100644 index 0000000..7e82a36 --- /dev/null +++ b/core/src/main/scala/com/eed3si9n/jarjarabrams/Utils.scala @@ -0,0 +1,9 @@ +package com.eed3si9n.jarjarabrams + +import java.io.InputStream + +object Utils { + // Use InputStream.readAllBytes() once on JDK >=9 + def readAllBytes(inputStream: InputStream): Array[Byte] = + Stream.continually(inputStream.read).takeWhile(_ != -1).map(_.toByte).toArray +}