@@ -34,33 +34,38 @@ internal class FileWriter(private val outputStream: DataOutputStream) {
34
34
lastSkippedData : LinkedList <ByteArray >,
35
35
data : ByteArray
36
36
) {
37
- if (lastSkippedData.isNotEmpty()) {
38
- lastSkippedData.forEach { outputStream.write(it) }
37
+ val totalSize = lastSkippedData.sumOf { it.size } + data.size
38
+ val byteBuffer = ByteBuffer .allocate(totalSize).order(ByteOrder .LITTLE_ENDIAN )
39
+
40
+ lastSkippedData.forEach { byteArray ->
41
+ byteBuffer.put(byteArray)
39
42
}
43
+
44
+ byteBuffer.put(data)
45
+
46
+ outputStream.write(byteBuffer.array())
40
47
lastSkippedData.clear()
41
- outputStream.write(data)
42
48
}
43
49
44
50
fun writeDataToStream (
45
51
lastSkippedData : LinkedList <FloatArray >,
46
52
data : FloatArray
47
53
) {
48
- if ( lastSkippedData.isNotEmpty()) {
49
- lastSkippedData.forEach { floatArray ->
50
- floatArray.forEach {
51
- val bytes = ByteBuffer .allocate( 4 ).order( ByteOrder . LITTLE_ENDIAN )
52
- .putFloat(it).array()
53
- outputStream.write(bytes)
54
- }
54
+ val totalFloats = lastSkippedData.sumOf { it.size } + data.size
55
+ val totalSize = totalFloats * 4
56
+ val byteBuffer = ByteBuffer .allocate(totalSize).order( ByteOrder . LITTLE_ENDIAN )
57
+
58
+ lastSkippedData.forEach { floatArray ->
59
+ floatArray.forEach { floatValue ->
60
+ byteBuffer.putFloat(floatValue)
55
61
}
56
62
}
57
- lastSkippedData.clear()
58
- data.forEach {
59
- val bytes =
60
- ByteBuffer .allocate(4 ).order(ByteOrder .LITTLE_ENDIAN ).putFloat(it)
61
- .array()
62
- outputStream.write(bytes)
63
+ data.forEach { floatValue ->
64
+ byteBuffer.putFloat(floatValue)
63
65
}
66
+
67
+ outputStream.write(byteBuffer.array())
68
+ lastSkippedData.clear()
64
69
}
65
70
66
71
}
0 commit comments