Convert all supported documents in a directory to Markdown files.
Basic batch conversion
importcom.groupdocs.markdown.*;importjava.io.File;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.util.HashSet;importjava.util.Set;publicclassBatchBasic{publicstaticvoidmain(String[]args)throwsIOException{StringinputDir="documents";StringoutputDir="output";Files.createDirectories(Paths.get(outputDir));// Get supported extensions
Set<String>supported=newHashSet<>();for(FileFormatformat:MarkdownConverter.getSupportedFormats()){supported.add("."+format.toString().toLowerCase());}intconverted=0;intskipped=0;File[]files=newFile(inputDir).listFiles();if(files==null){files=newFile[0];}for(Filefile:files){Stringext=extension(file.getName());if(!supported.contains(ext)){continue;}StringoutputPath=newFile(outputDir,baseName(file.getName())+".md").getPath();try{MarkdownConverter.toFile(file.getPath(),outputPath);converted++;System.out.println("OK: "+file.getName());}catch(Exceptione){skipped++;System.out.println("SKIP: "+file.getName()+" — "+e.getMessage());}}System.out.println("Done: "+converted+" converted, "+skipped+" skipped");}/** Java has no Path.GetExtension / GetFileNameWithoutExtension, so define them once. */privatestaticStringextension(StringfileName){intdot=fileName.lastIndexOf('.');returndot<0?"":fileName.substring(dot).toLowerCase();}privatestaticStringbaseName(StringfileName){intdot=fileName.lastIndexOf('.');returndot<0?fileName:fileName.substring(0,dot);}}
importcom.groupdocs.markdown.*;importjava.io.File;importjava.io.IOException;importjava.nio.file.Files;importjava.nio.file.Paths;importjava.util.Arrays;importjava.util.List;importjava.util.concurrent.CompletableFuture;importjava.util.stream.Collectors;publicclassBatchAsync{privatestaticfinalList<String>EXTENSIONS=Arrays.asList(".docx",".pdf",".xlsx",".epub");publicstaticvoidmain(String[]args)throwsIOException{StringinputDir="documents";StringoutputDir="output";Files.createDirectories(Paths.get(outputDir));File[]files=newFile(inputDir).listFiles((dir,name)->EXTENSIONS.contains(extension(name)));if(files==null){files=newFile[0];}DocumentConvertOptionsoptions=newDocumentConvertOptions();options.setImageExportStrategy(newSkipImagesStrategy());// toFileAsync already runs off the calling thread — do not wrap in a parallel stream
List<CompletableFuture<Void>>futures=Arrays.stream(files).map(file->{StringoutputPath=newFile(outputDir,baseName(file.getName())+".md").getPath();returnMarkdownConverterAsync.toFileAsync(file.getPath(),outputPath,options).thenRun(()->System.out.println("OK: "+file.getName())).exceptionally(e->{System.out.println("SKIP: "+file.getName()+" — "+e.getMessage());returnnull;});}).collect(Collectors.toList());CompletableFuture.allOf(futures.toArray(newCompletableFuture<?>[0])).join();}privatestaticStringextension(StringfileName){intdot=fileName.lastIndexOf('.');returndot<0?"":fileName.substring(dot).toLowerCase();}privatestaticStringbaseName(StringfileName){intdot=fileName.lastIndexOf('.');returndot<0?fileName:fileName.substring(0,dot);}}