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 val or byte[].
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.