I’m trying to read a local file an generate a base64 encoded string from it, to process it later. For this I created following code:
val file = new java.io.File("/openhab/conf/html/carport/ipcamera-" + suffix + ".gif")
val byte filebytes = org.apache.commons.io.FileUtils.readFileToByteArray(file)
val encoded = java.util.Base64.getEncoder().encode(filebytes)
Unfortunately this ends in the following log message:
The method or field org is undefined; line 10, column 577, length 3
I found some comments, that a lot of org.commons was removed in OH3, but if I reference it directly it should still be available, no?
If not can you recommend any alternatives to get the base64 string of a file?
It probably fails because you declared the type to be both
val and also
byte. It should either be
It will be more future proof to use the Java NIO Files class to read all bytes from a file:
val path = java.nio.file.Path.of("/openhab/conf/html/carport/ipcamera-" + suffix + ".gif")
val filebytes = java.nio.file.Files.readAllBytes(path)
val encoded = java.util.Base64.getEncoder().encodeToString(filebytes)
In OH 3.0 you can still use Commons IO. However it will be removed in OH 3.1.
Most of the Commons IO functionality is already provided by standard Java classes/methods in Java 11.
Thanks the declaration wasn’t the issue, but your example with nio works perfectly.