OSDN Git Service

Merge branch 'master' of ssh://www.deister.jp/mnt/hdb1/git/hayashi
[hayashilib/hayashi.git] / src / jp / co / areaweb / tools / csv / CsvFile.java
index 586e8b0..51a4475 100644 (file)
-package jp.co.areaweb.tools.csv;
-import java.io.*;
-import java.util.*;
-
-/**
- * <p>CSVファイルを操作する。<br/>
- * このクラスではCSVに対するファイル操作と、各行を束ねた単位で操作します。各行は、CsvRecordオブジェクトで管理します。<br/>
- * このクラスは通常,CsvRecordクラスとセットで利用します。</p>
- * 
- * <p>
- *     <b>ファイルの読み出し例</b>:<br/>
- *       CsvFile csv = new CsvFile("C:\\Program Files\\data\\フォルダ\\ファイル.csv");<br/>
- *       csv.load();
- * </p>
- * <p>
- *     <b>CSVレコードの追加と変更</b>:<br/>
-         if (csvf.isEmpty()) {<br/>
-           // 新規レコード<br/>
-           CsvRecord line = new CsvRecord();<br/>
-           line.add("code");<br/>
-           line.add("name");<br/>
-           csvf.add(line);<br/>
-         }<br/>
-         else {<br/>
-           // 既存タグ<br/>
-           CsvRecord line = csvf.getFirst();<br/>
-           line.set(1, "name");<br/>
-         }<br/>
- * </p>
- * <p>
- *     <b>ファイルに保存</b>(上書き):<br/>
- *       csv.save();
- * </p>
- * 
- * @author y_hayashi
- * @version v2.17      2010/01/24
- * @see jp.co.areaweb.tools.csv.CsvRecord
- * @since 2005/06/01
- */
-@SuppressWarnings("serial")
-public class CsvFile extends LinkedList<CsvRecord> {
-       //String pathname;              // 対象CSVファイルのパス名
-       protected String charsetName = "Windows-31J";
-       protected File file;
-       protected LinkedList<CsvRecord> allRecords = new LinkedList<CsvRecord>();       // CSVファイル内の全データを保持するコレクション
-       
-       /**
-        * pathnameで指定されたパス名のファイルを対象のCSVファイルとします.
-        * @param pathname 対象のCSVファイルのパス名
-        */
-       public CsvFile(String pathname) {
-               this(new File(pathname));
-       }
-
-       /**
-        * fileで指定されたファイルを対象のCSVファイルとします.
-        * @param file 対象のCSVファイル
-        */
-       public CsvFile(File file) {
-               this.file = file;
-       }
-       
-       /**
-        * CVSファイルからデータを読みだします。
-        */
-       public void load() throws Exception {
-               this.load(0);
-       }
-       
-       /**
-        * CVSファイルからデータを読みだします。
-        * (読み出し数の制限付き)
-        */
-       public void load(int limit) throws Exception {
-               this.clear();
-               LineNumberReader reader = new LineNumberReader(new InputStreamReader(new FileInputStream(this.file), this.charsetName));
-               String line;
-               for (int i = 0; ((limit <= 0) || (i < limit)); i++) {
-                       if ((line = reader.readLine()) == null) {
-                               break;
-                       }
-                       CsvRecord record = new CsvRecord();
-                       record.analizeRecord(line);
-                       this.add(record);
-               }
-       }
-       
-       /**
-        * インポート元のキャラクタセットを設定する。
-        * デフォルトは、「Windows31J」
-        * @param charsetName 対象のCSVファイル内の文字コード
-        */
-       public void setCharsetName(String charsetName) {
-               this.charsetName = charsetName;
-       }
-       
-       /**
-        * 現在設定されているCSVファイルの文字コードを取得する
-        * @return 現在設定されている文字コードを取得する
-        */
-       public String getCharsetName() {
-               return this.charsetName;
-       }
-       
-       /**
-        * インポート元ファイルを取得する。
-        * @return 実体ファイル
-        */
-       public File getFile() {
-               return this.file;
-       }
-
-       /**
-        * 元ファイルを設定する。
-        * @return 実体ファイル
-        */
-       public void setFile(File file) {
-               this.file = file;
-       }
-
-       /**
-        * index番目の項目がdataStrになっているレコードを読み出す。
-        * @param index 検索対象とする列番号(0~)
-        * @param dataStr 検索値
-        * @return 条件に合致したレコード(複数)
-        */
-       public CsvFile find(int index, String dataStr) {
-               CsvFile result = new CsvFile(this.file);
-               for (Iterator<CsvRecord> i = this.iterator(); i.hasNext(); ) {
-                       CsvRecord record = (CsvRecord)i.next();
-                       String data = (String)record.get(index);
-                       if (data.equals(dataStr)) {
-                               result.add(record);
-                       }
-               }
-               return result;
-       }
-
-       /**
-        * データ内容をファイルに書き戻す。<br>
-        * 当然、上書き書き込みになります。
-        * @throws IOException ファイルへの書き出しに失敗した。
-        */
-       public void save() throws IOException {
-               save(getFile());
-       }
-
-       /**
-        * データ内容をファイルに書き戻す。<br>
-        * @throws IOException ファイルへの書き出しに失敗した。
-        */
-       public void save(File outputFile) throws IOException {
-               FileOutputStream fo = new FileOutputStream(outputFile);
-               PrintStream ps = new PrintStream(fo);
-               for (Iterator<CsvRecord> i = this.iterator(); i.hasNext(); ) {
-                       CsvRecord record = (CsvRecord)i.next();
-                       ps.println(record.toString());
-               }
-               ps.close();
-               fo.close();
-       }
-}
+package jp.co.areaweb.tools.csv;\r
+import java.io.*;\r
+import java.util.*;\r
+\r
+/**\r
+ * <p>CSVファイルを操作する。<br/>\r
+ * このクラスではCSVに対するファイル操作と、各行を束ねた単位で操作します。各行は、CsvRecordオブジェクトで管理します。<br/>\r
+ * このクラスは通常,CsvRecordクラスとセットで利用します。</p>\r
+ * \r
+ * <p>\r
+ *     <b>ファイルの読み出し例</b>:<br/>\r
+ *       CsvFile csv = new CsvFile("C:\\Program Files\\data\\フォルダ\\ファイル.csv");<br/>\r
+ *       csv.load();\r
+ * </p>\r
+ * <p>\r
+ *     <b>CSVレコードの追加と変更</b>:<br/>\r
+         if (csvf.isEmpty()) {<br/>\r
+           // 新規レコード<br/>\r
+           CsvRecord line = new CsvRecord();<br/>\r
+           line.add("code");<br/>\r
+           line.add("name");<br/>\r
+           csvf.add(line);<br/>\r
+         }<br/>\r
+         else {<br/>\r
+           // 既存タグ<br/>\r
+           CsvRecord line = csvf.getFirst();<br/>\r
+           line.set(1, "name");<br/>\r
+         }<br/>\r
+ * </p>\r
+ * <p>\r
+ *     <b>ファイルに保存</b>(上書き):<br/>\r
+ *       csv.save();\r
+ * </p>\r
+ * \r
+ * @author y_hayashi\r
+ * @version v2.17      2010/01/24\r
+ * @see jp.co.areaweb.tools.csv.CsvRecord\r
+ * @since 2005/06/01\r
+ */\r
+@SuppressWarnings("serial")\r
+public class CsvFile extends LinkedList<CsvRecord> {\r
+       //String pathname;              // 対象CSVファイルのパス名\r
+       protected String charsetName = "Windows-31J";\r
+       protected File file;\r
+       protected LinkedList<CsvRecord> allRecords = new LinkedList<CsvRecord>();       // CSVファイル内の全データを保持するコレクション\r
+       \r
+       /**\r
+        * pathnameで指定されたパス名のファイルを対象のCSVファイルとします.\r
+        * @param pathname 対象のCSVファイルのパス名\r
+        */\r
+       public CsvFile(String pathname) {\r
+               this(new File(pathname));\r
+       }\r
+\r
+       /**\r
+        * fileで指定されたファイルを対象のCSVファイルとします.\r
+        * @param file 対象のCSVファイル\r
+        */\r
+       public CsvFile(File file) {\r
+               this.file = file;\r
+       }\r
+       \r
+       /**\r
+        * CVSファイルからデータを読みだします。\r
+        */\r
+       public void load() throws Exception {\r
+               this.load(0);\r
+       }\r
+       \r
+       /**\r
+        * CVSファイルからデータを読みだします。\r
+        * (読み出し数の制限付き)\r
+        */\r
+       public void load(int limit) throws Exception {\r
+               this.clear();\r
+               LineNumberReader reader = new LineNumberReader(new InputStreamReader(new FileInputStream(this.file), this.charsetName));\r
+               String line;\r
+               for (int i = 0; ((limit <= 0) || (i < limit)); i++) {\r
+                       if ((line = reader.readLine()) == null) {\r
+                               break;\r
+                       }\r
+                       CsvRecord record = new CsvRecord();\r
+                       record.analizeRecord(line);\r
+                       this.add(record);\r
+               }\r
+               reader.close();\r
+       }\r
+       \r
+       /**\r
+        * インポート元のキャラクタセットを設定する。\r
+        * デフォルトは、「Windows31J」\r
+        * @param charsetName 対象のCSVファイル内の文字コード\r
+        */\r
+       public void setCharsetName(String charsetName) {\r
+               this.charsetName = charsetName;\r
+       }\r
+       \r
+       /**\r
+        * 現在設定されているCSVファイルの文字コードを取得する\r
+        * @return 現在設定されている文字コードを取得する\r
+        */\r
+       public String getCharsetName() {\r
+               return this.charsetName;\r
+       }\r
+       \r
+       /**\r
+        * インポート元ファイルを取得する。\r
+        * @return 実体ファイル\r
+        */\r
+       public File getFile() {\r
+               return this.file;\r
+       }\r
+\r
+       /**\r
+        * 元ファイルを設定する。\r
+        * @return 実体ファイル\r
+        */\r
+       public void setFile(File file) {\r
+               this.file = file;\r
+       }\r
+\r
+       /**\r
+        * index番目の項目がdataStrになっているレコードを読み出す。\r
+        * @param index 検索対象とする列番号(0~)\r
+        * @param dataStr 検索値\r
+        * @return 条件に合致したレコード(複数)\r
+        */\r
+       public CsvFile find(int index, String dataStr) {\r
+               CsvFile result = new CsvFile(this.file);\r
+               for (Iterator<CsvRecord> i = this.iterator(); i.hasNext(); ) {\r
+                       CsvRecord record = (CsvRecord)i.next();\r
+                       String data = (String)record.get(index);\r
+                       if (data.equals(dataStr)) {\r
+                               result.add(record);\r
+                       }\r
+               }\r
+               return result;\r
+       }\r
+\r
+       /**\r
+        * データ内容をファイルに書き戻す。<br>\r
+        * 当然、上書き書き込みになります。\r
+        * @throws IOException ファイルへの書き出しに失敗した。\r
+        */\r
+       public void save() throws IOException {\r
+               save(getFile());\r
+       }\r
+\r
+       /**\r
+        * データ内容をファイルに書き戻す。<br>\r
+        * @throws IOException ファイルへの書き出しに失敗した。\r
+        */\r
+       public void save(File outputFile) throws IOException {\r
+               FileOutputStream fo = new FileOutputStream(outputFile);\r
+               PrintStream ps = new PrintStream(fo);\r
+               for (Iterator<CsvRecord> i = this.iterator(); i.hasNext(); ) {\r
+                       CsvRecord record = (CsvRecord)i.next();\r
+                       ps.println(record.toString());\r
+               }\r
+               ps.close();\r
+               fo.close();\r
+       }\r
+}\r