I had a similar question some time ago. Now I don't have any specific file name, because it is a preprocessor script. So I need to check the file size of a list of files or the size of a specific path.
the solution with the specific path was:
var filePath = "//path//to//some//folder//file.name";
try{
var fileContent = java.nio.file.Files.size(java.nio.file.Paths.get(filePath));
var fileSize = fileContent / 1048576;
logger.debug("Filesize in MB: " + fileSize);
}
catch(e){
...
what I've already tried:
java.io.File(filePath).length();
here the size doesn't match what's actually in the folder.
and
java.nio.file.Files.list(filePath);
here I get a java.util.stream.ReferencePipeline$Head@... which I don't know how to read out in mirth
Maybe anyone could help or show me another solution to check the a file size before processing without reading in the file on Java Version "1.8.0._92" and Windows Server 2012R2 environment?
You can sum the sizes of all files within a directory using streams:
long total = Files
.list(Paths.get("c:/some/path/"))
.mapToLong(p -> p.toFile().length())
.sum();
System.out.println(total);
Edit: The original answer above is in Java. In Mirth javascript it would look like this:
var total = java.nio.file.Files
.list(java.nio.file.Paths.get("c:/some/path/"))
.mapToLong(function(p) {return p.toFile().length()})
.sum();
channelMap.put('total', total);