-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