package freenet.tools; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import freenet.support.SimpleFieldSet; public class MergeSFS { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { if (args.length < 2 || args.length > 3) { System.out.println("Merges changes made in a SFS override file to a SFS source file."); System.out.println("Usage: source-file override-file [--stdout]"); System.out.println(" By default the merged file is written to source-file."); System.out.println(" --stdout writes to standard output instead."); return; } File f1 = new File(args[0]); File f2 = new File(args[1]); SimpleFieldSet fs1 = SimpleFieldSet.readFrom(f1, false, true); SimpleFieldSet fs2 = SimpleFieldSet.readFrom(f2, false, true); fs1.putAllOverwrite(fs2); // Force output to UTF-8. A PrintStream is still an OutputStream. // These files are always UTF-8, and stdout is likely to be redirected into one. final OutputStream os; if (args.length == 3 && args[2].equals("--stdout")) { os = System.out; } else { os = new FileOutputStream(f1); } Writer w = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); fs1.writeToOrdered(w); w.flush(); } }