JunkUtil (1.1.0) | 2012-04-29 13:38 |
JunkUtil安定版 (1.1.0) | 2012-04-29 13:45 |
以下は、バッチ処理のサンプルです。test/junkutil/sample に入っています。
package junkutil.sample; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Map; import junkutil.common.FileUtil; import junkutil.common.OptGets; import junkutil.set.LzList; /** * 引数に与えられたファイルの中で、英字で始まる行だけを出力するプログラム。 * 引数 -h でヘッダーを出力する。 * @author Hiroyuki Shiota */ public class BatchTest { /** * メイン * @param args */ public static void main(String [] args) { args = new String[] { "-h", "testdata/readFile.txt", "testdata/writeFile.txt", "Nothing.txt" }; try { OptGets optGets = new OptGets("abch"); Map opts = optGets.parse(args); if (opts.get("h") == Boolean.TRUE) { System.out.println("====BatchTest Heaader===="); } //Mapを出力する for (Iterator i = opts.keySet().iterator(); i.hasNext(); ) { Object key = i.next(); System.out.println(key.toString() + "=" + opts.get(key).toString()); } //ファイルを出力する List argList = optGets.getArgList(); for (int i = 0; i < argList.size(); i++) { String filename = (String)argList.get(i); if (!FileUtil.exists(filename)) { System.out.println("File not found: " + filename); continue; } else { System.out.println("File: " + filename); List lines = FileUtil.readLines(filename, "Shift_JIS"); List grep = new LzList(lines).grep("^[a-zA-Z]").list(); for (int j = 0; j < grep.size(); j++) { System.out.println((String)grep.get(j)); } } } } catch (IOException e) { e.printStackTrace(); } } }
package junkutil.sample; import java.io.IOException; import java.util.List; import java.util.Map; import junkutil.common.FileUtil; import junkutil.common.OptGets; import junkutil.set.LzList; import junkutil.set.LzListClosure; import junkutil.set.LzMap; import junkutil.set.LzMapClosure; /** * 引数に与えられたファイルの中で、英字で始まる行だけを出力するプログラム。 * 引数 -h でヘッダーを出力する。クロージャを活用する。 * @author Hiroyuki Shioa */ public class BatchTest2 { /** * Mapを出力するクロージャ */ private static class MapDump implements LzMapClosure { public boolean process(Object key, Object value) { System.out.println(key + "=" + value); return false; }; } /** * リストを出力するクロージャ */ private static class ListDump implements LzListClosure { public boolean process(int i, int len, Object obj) { System.out.println(obj); return false; } } /** * ファイルを出力するクロージャ */ private static class FileDataDump implements LzListClosure { public boolean process(int i, int len, Object obj) { String filename = (String)obj; if (!FileUtil.exists(filename)) { System.out.println("File not found: " + filename); return false; } else { System.out.println("File: " + filename); List lines = null; try { lines = FileUtil.readLines(filename, "Shift_JIS"); new LzList(lines).grep("^[a-zA-Z]").forEach(new ListDump()); } catch (IOException e) { e.printStackTrace(); } return true; } } } /** * メイン * @param args */ public static void main(String [] args) { args = new String[] { "-h", "testdata/readFile.txt", "testdata/writeFile.txt", "Nothing.txt" }; OptGets optGets = new OptGets("abch"); Map opts = optGets.parse(args); if (opts.get("h") == Boolean.TRUE) { System.out.println("====BatchTest Heaader===="); } List argList = optGets.getArgList(); new LzMap(opts).forEach(new MapDump()); //Mapをダンプ new LzList(argList).forEach(new FileDataDump()); //ファイル情報をダンプ } }