package com.xenoage.zong.desktop.io; import static com.xenoage.utils.kernel.Range.range; import java.io.File; import java.io.IOException; import java.util.List; import com.xenoage.utils.document.Document; import com.xenoage.utils.document.io.FileInput; import com.xenoage.utils.document.io.FileOutput; import com.xenoage.utils.io.OutputStream; import com.xenoage.utils.jse.io.JseInputStream; import com.xenoage.utils.jse.io.JseOutputStream; /** * Reads and writes a {@link Document} from or to the given {@link File} * using the given {@link FileInput} or {@link FileOutput}. * * @author Andreas Wenger */ public class DocumentIO { public static <T extends Document> T read(File file, FileInput<T> input) throws IOException { try (JseInputStream stream = new JseInputStream(file)) { return input.read(stream, file.getAbsolutePath()); } } public static <T extends Document> void write(T doc, File file, FileOutput<T> output) throws IOException { List<String> fileNames = output.getFileNames(doc, file.getAbsolutePath()); for (int iFile : range(fileNames)) { try (OutputStream stream = new JseOutputStream(fileNames.get(iFile))) { output.write(doc, iFile, stream); } } } }