目 次 Java 入 門 5 1 はじめに...1 1.1 ファイルを 書 き 出 すために 使 うクラス...1 2 テストファイルを 書 く 手 順...2 2.1 テキストファイルを 書 くための 概 略 手 順...2 2.1.1 File インスタンスを 作 成 する...2 2.1.2



Similar documents
Java 入門 4 Java 入門 4 - ファイルを読む Version 1.01 Kyosuke Yanai Copyright(c) 2010 Kyosuke Yanai

Prog1_11th

1

プログラミング基礎I(再)

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

年齢別人数計算ツールマニュアル

01_07_01 データのインポート_エクスポート_1

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

Ver 改 訂 日 付 改 訂 内 容 1

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

設定フロー ★印は必須の設定です

計算式の取り扱い

Prog2_10th

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 4ページに 汎 用 データ 受 入 に 関 するよくあるお 問 い 合 わせをご 紹 介 しています Step (3ペー

DN6(R04).vin

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン

図 2 エクスポートによるシェープファイルの 新 規 保 存 新 規 保 存 するファイルは,より 分 かりやすい 名 前 をつけて 適 切 なフォルダ(shape フォル ダにまとめておくのがよい) 上 に 保 存 しておく 2 / 10

t検定

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

スライド 1

オブジェクト指向プログラミング・同演習 5月21日演習課題

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

改 定 履 歴 改 訂 日 改 訂 理 由 及 び 内 容 承 認 者 確 認 者 改 訂 者 05/8/7 新 版 発 行 05/0/5 推 奨 動 作 環 境 を 追 記

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

一 括 登 録 方 法 一 括 登 録 をするには 予 め 専 用 の CSV ファイルを 作 成 する 必 要 があります 普 段 エクセルファイルで 管 理 をされている 方 は, 以 下 の 3 列 のみのデータとなるようにデータを 加 工 して CSV ファイルとして 保 存 して 下 さ

R4財務対応障害一覧

PowerPoint プレゼンテーション

Office 10 パッケージ版「リンク集」

スライド 1

購買ポータルサイトyOASIS簡易説明書 b

Microsoft Word - tb01.doc

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

スライド 1

~ 目 次 ~ 1. 履 修 登 録 のながれ 1 2. 利 用 可 能 な 機 能 について 2 3.Web 履 修 登 録 画 面 へのログイン ログアウト 方 法 3 4. 予 備 登 録 ( 定 員 設 定 科 目 の 履 修 ) (1) 予 備 登 録 5 (2) 予 備 登 録 状 況

目 次 1.はじめに 書 式 の 説 明 表 紙 スケジュール 組 入 れ 基 準 併 用 禁 止 薬 併 用 注 意 薬 同 種 同 効 薬 医 師 モニタリング..

目 次 1. ログイン ユーザー 登 録 TOP 職 員...8 (1) 職 員 の 名 刺 表 示...8 (2) 職 員 の 名 刺 一 括 ダウンロード...8 (3) 職 員 の 名 刺 帳 から 検 索 検 索...9 (1) 氏 名

WebAlertクイックマニュアル

PowerPoint プレゼンテーション

Microsoft PowerPoint - 04_H26material_practice_No3-3.pptx

K227 Java 2

文科省様式3-2集計オプションマニュアル

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

PowerPoint プレゼンテーション

Web 1 p.2 1 Servlet Servlet Web Web Web Apache Web Servlet JSP Web Apache Tomcat Jetty Apache Tomcat, Jetty Java JDK, Eclipse

1-2 新 規 CPD 会 員 登 録 の 申 請 から 登 録 までの 手 順 当 協 会 CPDシステムを 利 用 するためには 当 協 会 ホームページトップ 画 面 より CPD 事 務 局 へ のCPD 会 員 登 録 が 必 要 です CPD 会 員 登 録 が 完 了 すると 登 録

Microsoft PowerPoint - 集計サービス手順説明

1-1 一覧画面からの印刷

2016 年 度 情 報 リテラシー 三 科 目 合 計 の 算 出 関 数 を 用 いて 各 教 科 の 平 均 点 と 最 高 点 を 求 めることにする この2つの 計 算 は [ホーム]タブのコマ ンドにも 用 意 されているが 今 回 は 関 数 として 作 成 する まず 表 に 三 科

2. 事 務 連 絡 者 用 メニュー (1) 登 録 変 更 申 請 委 員 会 メンバー メンバー 個 人 情 報 企 業 情 報 の 変 更 および JIRA 会 員 を 退 会 する 場 合 こ のメニューから 各 種 申 請 を 行 います 申 請 後 変 更 内 容 を JIRA 事 務

ことばを覚える

JavaプログラミングⅠ

2.4 箇 条 書 のスタイルを 変 更 する 右 クリックして 箇 条 書 と 番 号 付 け を 選 択 する. あとは 少 し 遊 べば, このようなことをやりたい 人 は 理 解 できると 思 います 3 いろいろな 入 力 ワープロを 使 う 上 で 肝 心 な 点 は, 空 白 調 整

接続試験実施要領【障害者総合支援法(平成27年4月報酬改定)対応】

Outlook Express, Windows Mail / Outlook のアドレス 帳 からエクスポートした CSV ファイルを Active! mail にインポートする 場 合 勤 務 先 の 番 地 / 番 地 ( 会 社 )が 複 数 行 入 力 されているとインポート 時 に 改

[2] 控 除 限 度 額 繰 越 欠 損 金 を 有 する 法 人 において 欠 損 金 発 生 事 業 年 度 の 翌 事 業 年 度 以 後 の 欠 損 金 の 繰 越 控 除 にあ たっては 平 成 27 年 度 税 制 改 正 により 次 ページ 以 降 で 解 説 する の 特 例 (

AdobeReader(pdf)の 場 合 1) AdobeReader で 文 書 を 開 き [ ファイル ] > [ プロパティ ]を 選 択 します 2) [ ページサイズ ]の 値 を 確 認 します 3. 定 格 サイズかを 確 認 する 下 にある A 列 B 列 の 寸 法 一 覧

1. 表 から 値 を 抽 出 する 説 明 1.1. 表 から 値 を 抽 出 するための 関 数 について 説 明 します LOOKUP VLOOKUP HLOOKUP 関 数 は 検 索 値 に 対 応 する 値 を 検 索 値 を 含 む 一 覧 表 から 抽 出 し てくれる 関 数 です

Microsoft Word - 03accessデータベース演習レジメ.doc

別冊資料-11

Microsoft Word - WBT(PP応用編).docx

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

II 1 p.1 1 Servlet 1.1 Web Web WWW HTML CGI Common Gateway Interface Web HTML Web Web CGI CGI CGI Perl, PHP C JavaScript Web CGI HTML 1.2 Servlet Java

本 操 作 説 明 書 について 本 操 作 説 明 書 は 物 品 電 子 調 達 システム 入 札 参 加 資 格 審 査 申 請 についての 操 作 を 説 明 したものです 動 作 環 境 本 アプリケーションは 以 下 の 環 境 にて 動 作 致 します OS 日 本 語 Microso

1. アクセスする 2. 簡 易 検 索 画 面 (fig. 1) アクセスすると 最 初 に 出 る 画 面 です 検 索 語 入 力 ボックスにキーワードを 入 力 して 論 文 検 索 ボタンをクリックし ます 3. ボックス 下 部 のチェック 項

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加

PowerPoint プレゼンテーション

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

5-2.操作説明書(支店連携)_xlsx

 

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

ez_meishi.ppt

V-CUBE One

新・明解Java入門

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

(Taro-Excel\202\314\212\356\221b\207W.jtd)

Microsoft Word - CiNii看護大

U/Cサーバ 業務システム間転送プログラムインターフェース仕様書

特別徴収封入送付作業について

機 能 概 要 概 要 平 成 24 年 度 シームレスな 地 域 連 携 医 療 の 実 現 実 証 事 業 に 対 応 するため 地 域 連 携 システム( 能 登 北 部 版 )を 構 築 する 機 能 < 機 能 追 加 変 更 一 覧 > 1. 画 像 連 携 機 能 院 内 で 撮 影

スライド 1

HK05

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

施 工 P お 気 に 入 り データを 活 用 するための 準 備 施 工 パッケージデータをお 気 に 入 りに 登 録 し 単 価 を 閲 覧 するための 方 法 を 説 明 します 1. 施 工 パッケージデータをダウンロードする 施 工 パッケージデータのダウンロードは 下 記 から 行

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

BizDataBank とは インターネット 上 (クラウド)に 大 切 なデータを 保 存 することが 出 来 る 便 利 なアプリケーション (オンラインストレージ)です 本 資 料 について BizDataBank サービスは マイナーバージョンアップ 等 もあるため 実 際 のクライアントと

Microsoft Word - ML_ListManager_10j.doc

<IE の 設 定 について> 従 来 版 をすでにご 利 用 の 方 の 場 合 互 換 表 示 設 定 がある 状 態 になっていると 思 わ れますので 必 ず 解 除 の 設 定 を 行 ってください 従 来 版 では IE の 10 以 上 では 互 換 表 示 設 定 が 必 要 でした

<4D F736F F F696E74202D C90BF8F CC8DEC90AC97E181698A4F8D E8816A5F56322E707074>

XML形式の電子報告書作成に当たっての留意事項

検 索 の 型 が FALSE 又 は 0 の 場 合 は 左 端 を 昇 順 に 並 べ 替 えておく 必 要 はありません が 該 当 する 値 がない 場 合 は エラーになります 旅 行 命 令 書 など 名 前 から 職 名 や 住 所 を VLOOKUP 関 数 で 取 得 する 場 合

Microsoft Word - 第3章.doc

PowerPoint プレゼンテーション

目 次 ページ 1 この 文 書 について おすすめキー 設 定 について 段 落 番 号 の 使 い 方 段 落 番 号 の 設 定 を 選 択 する 現 在 の 段 落 番 号 の 設 定 を 確 認 する 段 落


基本操作マニュアル[既存ページの編集と連載記事の作成・更新]編

もくじ 0.はじめに 1 1. 用 紙 をスキャナで 用 紙 を 読 み 込 む 1 2. 書 式 定 義 マークした 部 分 を 個 々のデータとして 取 り 込 む 場 合 ( 複 数 回 答 対 応 ) マークした 部 分 をグループ 化 して 取 り 込 む 場 合

操 作 の 手 順 : 個 人 住 民 税 一 括 納 付 / 新 規 依 頼 修 正 複 写 個 人 住 民 税 一 括 納 付 メニュー 個 人 住 民 税 一 括 納 付 新 規 依 頼 修 正 複 写 依 頼 / 委 託 者 情 報 入 力 (P100) 依 頼 修 正 / 委 託 者 情

Transcription:

Java 入 門 5 - ファイルを 書 く - 2010-09-23 Version 1.0 Kyosuke Yanai Copyright(c) 2010 Kyosuke Yanai

目 次 Java 入 門 5 1 はじめに...1 1.1 ファイルを 書 き 出 すために 使 うクラス...1 2 テストファイルを 書 く 手 順...2 2.1 テキストファイルを 書 くための 概 略 手 順...2 2.1.1 File インスタンスを 作 成 する...2 2.1.2 テキストファイルを 作 成 する...2 2.1.3 PrintWriter インスタンスを 作 成 する...3 2.1.4 テキストファイルの 内 容 を 書 き 出 す...3 2.1.4.1 print メソッド...4 2.1.4.2 println メソッド...4 2.1.4.3 printf メソッド...5 2.1.4.4 書 式 文 字 列...5 2.1.4.5 printf の 使 用 例...6 2.1.5 close()メソッドを 呼 び 出 して テキストファイルを 閉 じる...7 3 テキストファイル 書 き 込 みプログラムを 作 成...8 3.1 プログラムの 概 要...8 3.2 ソースコード 例...8 3.3 eclipse でクラスを 作 成...10 4 テキストファイル 読 み 込 みプログラムを 実 行... 11 4.1 ディレクトリの 作 成... 11 4.2 実 行... 11 5 テキストファイルの 読 み 込 みと 書 き 込 み... 12 5.1 String クラスのメソッド...12 5.1.1 文 字 列 の 比 較...12 5.1.2 文 字 列 の 検 索...13 5.1.3 文 字 列 の 抽 出 編 集...17 5.1.3.1 正 規 表 現 の 概 要...19 6 テキストファイルの 読 み 込 みと 編 集 出 力... 22 6.1 クラス 構 成...22 6.2 ソースコード...23 6.3 eclipse でクラスを 作 成 実 行...28 7 演 習... 29 7.1 CSV ファイルの 読 み 込 みと 編 集 出 力...29 7.2 2 つの CSV ファイルの 読 み 込 みと 編 集 出 力...29 Copyright(c) 2010 Kyosuke Yanai i

8 付 録... 30 8.1 TBD...30 9 改 定 履 歴... 31 10 索 引... 32 Copyright(c) 2010 Kyosuke Yanai ii

1 はじめに 本 テキストでは テキストファイルを 書 く 方 法 を 学 びます また テキストファイルを 読 み 内 容 を 抽 出 変 換 して 別 のファイルに 書 き 出 すこともやってみます これに 関 連 して 以 下 のことも 学 びます File クラス PrintWriter クラス String クラスの 主 なメソッド 正 規 表 現 1.1 ファイルを 書 き 出 すために 使 うクラス テキストファイルを 書 くのによく 使 われるクラスをリストします Java のさまざまなクラスの 仕 様 の 詳 細 は 下 記 のサイトに 載 っていますのでご 覧 ください http://java.sun.com/javase/ja/6/docs/ja/api/index.html (1) File クラス( 正 式 名 = java.io.file) ファイルとディレクトリを 扱 うためのクラスです このクラスを 使 って ディレクトリの 作 成 ディレクトリ 配 下 のファイルの 一 覧 パスの 処 理 などを 行 います このクラスだけでは ファイルの 内 容 を 読 んだり 書 いたりすることはできません (2) FileWriter クラス( 正 式 名 = java.io.filewriter) テキストファイルを 書 くための 基 本 的 な 機 能 を 持 ったクラスです (3) BufferedWriter クラス( 正 式 名 = java.io.bufferedwriter) FileWriter に newline()メソッドが 追 加 されたクラスです (4) PrintWriter クラス( 正 式 名 = java.io.printwriter) System.out と 同 じような 感 覚 で 使 用 できるメソッド(println など)を 持 ったクラスです 本 テキストでは PrintWriter クラスを 使 用 します 1

2 テストファイルを 書 く 手 順 ここでは テキストファイルを 書 く 基 本 的 な 手 順 を 学 びます 先 に 説 明 した File PrintWriter クラスを 使 用 します 2.1 テキストファイルを 書 くための 概 略 手 順 テキストファイルを 書 くための 概 略 手 順 を 図 に 示 します (1) ファイルパスを 指 定 して File インスタンスを 作 成 する (2) File の createnewfile()メソッドで 新 たにファイルを 作 成 する (3) File インスタンスを 指 定 して PrintWriter インスタンス を 作 成 する (4) PrintWriter の println()などのメソッドを 使 って テキ ストを 書 く (5) PrintWriter の close()メソッドを 呼 び 出 して テキスト ファイルを 閉 じる 図 2-1 テキストファイルに 内 容 を 書 き 出 す 概 略 手 順 各 ステップについて 詳 しく 説 明 します 2.1.1 File インスタンスを 作 成 する File クラスのコンストラクタに ファイルパスを 指 定 します String filepath = "ファイルパス"; File file = new File(filepath); 図 2-2 (1) File インスタンスを 作 成 する 2.1.2 テキストファイルを 作 成 する File の createnewfile()メソッドで 新 たにファイルを 作 成 します 2

file.creaenewfile(); 図 2-3 (2) 新 たにファイルを 作 成 する createnewfile 宣 言 : public boolean createnewfile() throws IOException 引 数 : なし 機 能 : File インスタンスが 持 つパス 名 の 空 (から)の 新 しいファイルを 生 成 します 戻 り 値 : true - ファイルの 生 成 に 成 功 した 場 合 false - 示 されたファイルがすでに 存 在 する 場 合 例 外 : IOException - 入 出 力 エラーが 発 生 した 場 合 2.1.3 PrintWriter インスタンスを 作 成 する PrintWriter クラスのコンストラクタに 生 成 した File インスタンスを 指 定 します PrintWriter pw = new PrintWriter(file); 図 2-4 (3) PrintWriter インスタンスを 作 成 する 2.1.4 テキストファイルの 内 容 を 書 き 出 す PrintWriter クラスには テキストを 書 き 出 すために 色 々なメソッドが 備 わっています よく 使 われるメソッドを 紹 介 します メソッド print() println() printf() format() 表 2-1 PrintWriter クラスの 主 なメソッド 概 要 文 字 列 数 値 などを 書 き 出 します 文 字 列 数 値 などを 書 き 出 し 行 を 終 了 させます 書 式 付 き 文 字 列 を 書 き 出 します 書 式 付 き 文 字 列 を 書 き 出 します 書 式 付 き 文 字 列 文 字 列 を 表 示 / 出 力 するときに その 文 字 列 の 中 に 日 付 や 金 額 などの 値 を 含 めたいことが あります 数 値 を 文 字 列 にして 表 示 / 出 力 するのですが 頭 に 金 額 の" "をつけたり 3 桁 ご とに","(カンマ)を 付 けたり といったことをします このように 文 字 列 に 数 値 などを 文 字 列 に 変 換 する 場 合 どのような 文 字 列 に 変 換 するかを 示 すものを 書 式 といいます その 書 式 を 含 んだ 文 字 列 を 書 式 付 き 文 字 列 といいます 具 体 的 には このあと 見 ていきましょう 3

各 メソッドの 仕 様 を 少 し 詳 しく 見 てみましょう なお printf()と format()はほとんど 同 じ 役 割 をしますので ここでは format メソッドの 詳 細 は 省 略 します 2.1.4.1 print メソッド 引 数 によって 機 能 が 異 なる 同 名 のメソッドがあります ここでは 主 なものを 紹 介 します print boolean 宣 言 : public void print(boolean b) 引 数 : boolean 型 機 能 : boolean 型 の 値 (true/false)を 出 力 します 戻 り 値 : なし print int 宣 言 : public void print(int i) 引 数 : int 型 機 能 : 整 数 型 の 値 を 出 力 します 戻 り 値 : なし print String 宣 言 : public void print(string s) 引 数 : String 型 機 能 : 文 字 列 を 出 力 します 戻 り 値 : なし 2.1.4.2 println メソッド print メソッドの 動 作 に 行 の 終 了 が 追 加 されます print()を 使 った 場 合 と println()を 使 った 場 合 の 違 いは 次 のようになります print() pw.print("abc"); pw.print("def"); pw.print("ghi"); println() pw.println("abc"); pw.println("def"); pw.println("ghi"); 出 力 結 果 ABCDEFGHI 出 力 結 果 ABC DEF GHI pw は PrintWriter のインスタンスを 参 照 しているものとします 図 2-5 print()と println()の 違 い 4

println()では 改 行 されているのがわかりますね 2.1.4.3 printf メソッド 書 式 付 き 文 字 列 を 書 き 出 します printf 宣 言 : public PrintWriter printf(string format, Object... args) 引 数 : format 書 式 付 き 文 字 列 (String 型 ) args オブジェクト 省 略 可 能 です また 複 数 個 の 指 定 ができます 機 能 : 書 式 付 き 文 字 列 を 出 力 します このとき args で 指 定 したオブジェクトを 文 字 列 に 変 換 して 出 力 します 戻 り 値 : PrintWriter 自 身 例 外 : IllegalFormatException 書 式 文 字 列 が 正 しくないときにスローされます printf でサポートしている 書 式 付 き 文 字 列 は 豊 富 ですが 比 較 的 よく 使 われるものを 紹 介 します 2.1.4.4 書 式 文 字 列 書 式 を 構 成 する 文 字 列 は 次 のような 形 式 をとります 書 式 文 字 列 %[argument_index$][flags][width][,presision]conversion (1) % 書 式 文 字 列 は "%"(パーセント)で 始 まります (2) argument_index$ 引 数 args の 何 番 目 の 引 数 を 表 示 対 象 とするかを 示 します たとえば 1$は 引 数 args の 最 初 の 引 数 を 示 します 同 様 に 2$, 3$, 4$,... と 記 述 します なお args の 引 数 がひとつだけの 場 合 には argument_index$は 不 要 です (3) flags 対 象 の 引 数 の 表 示 をどう 変 更 するかを 指 定 します "-" : 左 そろえします "+" : 符 号 ( + か - ) を 付 与 します "0" : "0"(ゼロ)で 埋 めます "," : ","(カンマ)を 付 与 します "(" : マイナスを"(" と")" の 括 弧 でくくります (4) width 出 力 する 最 小 の 文 字 数 を 指 定 します (5),presision 5

引 数 が 浮 動 小 数 点 (float)の 場 合 にだけ 有 効 です 小 数 点 の 右 の 桁 数 を 指 定 します (6) conversion 対 象 とする 引 数 のデータ 型 を 示 します "b" : boolean "c" : 文 字 型 "d" : 整 数 型 "f" : 不 動 小 数 点 型 "s" : 文 字 列 型 2.1.4.5 printf の 使 用 例 printf の 使 用 例 をいくつか 載 せます 引 数 は 整 数 型 を 使 用 しています (1) 書 式 文 字 列 %d 整 数 型 の 引 数 がひとつのときに 使 用 できます ( 例 -1) 記 述 int arg = 456789; pw.printf(" 引 数 の 値 は %d です ", arg); 実 行 結 果 引 数 の 値 は 456789 です (2) 書 式 文 字 列 %1$d %2$d 整 数 型 の 引 数 が2つのときに 使 用 できます ( 例 -2) 記 述 int number = 15; int value = 123456; pw.printf("%1$d 番 目 の 値 は %2$d です ", number, value); 実 行 結 果 15 番 目 の 値 は 123456 です (3) 書 式 文 字 列 %+d 整 数 型 の 引 数 に 符 号 を 付 与 して 出 力 します ( 例 -3) 記 述 int value = 123456; 6

pw.printf("データの 値 は %+d です ", value); 実 行 結 果 データの 値 は +123456 です (4) 書 式 文 字 列 %,d 整 数 型 の 引 数 をカンマ 付 きで 出 力 します ( 例 -4) 記 述 int population = 410341; pw.printf(" 藤 沢 市 の 人 口 は %,d 人 です ", population); 実 行 結 果 藤 沢 市 の 人 口 は 410,341 人 です 2.1.5 close()メソッドを 呼 び 出 して テキストファイルを 閉 じる PrintWriter の close()メソッドを 呼 び 出 して テキストファイルを 閉 じます close 宣 言 : public void close() 引 数 : なし 機 能 : PrintWriter を 閉 じます 戻 り 値 : なし 7

3 テキストファイル 書 き 込 みプログラムを 作 成 Java 入 門 5 では これまでの 内 容 を 元 に テキストファイル 読 み 込 みプログラムを 作 成 しましょう 本 テキストに 基 づいて 先 に 作 成 したサンプルの jp.lites.study.java パッケージが 残 ってい る 場 合 は パッケージ 作 成 までの 作 業 をスキップしてください 3.1 プログラムの 概 要 以 下 のようなプログラムを 作 ってみましょう 出 力 内 容 はお 好 きなように 書 いてみてくださ い プロジェクト 名 : java_05 パッケージ 名 : jp.lites.study.java クラス 名 : WriteSample 出 力 するテキストファイルパス: c: tmp sample.txt 出 力 内 容 : Java 入 門 5 ファイルを 書 く サンプルプログラムです お 好 きなように 書 いてみてください 以 上 です 注 意 出 力 するテキストファイル 名 は すでに 存 在 しているファイルではないようにしましょう 思 いがけずに 重 要 なテキストファイルを 壊 してしまわないように 十 分 注 意 しまょう 3.2 ソースコード 例 ソースコード 例 を 示 します line 1 2 3 4 5 6 7 8 9 10 11 リスト 3-1 WriteSample.java WriteSample.java package jp.lites.study.java; import java.io.file; import java.io.filenotfoundexception; import java.io.ioexception; import java.io.printwriter; public class WriteSample { public static void main(string[] args) { 8

line 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 32 33 34 35 36 37 38 39 40 41 42 43 Java 入 門 5 WriteSample.java String filepath = "c:/tmp/sample.txt"; File file = new File(filePath); try { file.createnewfile(); PrintWriter pw = new PrintWriter(file); pw.println("java 入 門 5 ファイルを 書 く"); pw.println("サンプルプログラムです "); int population = 410341; pw.printf(" 藤 沢 市 の 人 口 は %,d 人 です n", population); pw.println(" 以 上 です "); pw.close(); System.out.println("ファイルを 作 成 しました "); catch (FileNotFoundException e) { System.out.println("ファイルを 生 成 できません "); e.printstacktrace(); catch (IOException e) { System.out.println("ファイルの 書 き 込 みでエラーが 発 生 しました "); e.printstacktrace(); 12 行 目 作 成 するテキストファイルのパスを "c:/tmp/sample.txt"とします 14 行 目 File インスタンスを 生 成 します 17 行 目 新 たにファイルを 生 成 します 9

19 行 目 file を 指 定 して PrintWriter インスタンスを 生 成 します 21~27 行 目 PrintWriter のメソッドを 使 用 して テキストを 書 き 出 します 29 行 目 PrintWriter を close します 33~39 行 目 例 外 をキャッチし メッセージを 表 示 します 3.3 eclipse でクラスを 作 成 上 記 のクラスを eclipse で 作 成 してください 作 成 したら 休 憩 しましょう 10

4 テキストファイル 読 み 込 みプログラムを 実 行 では 作 成 したプログラムを 実 行 して テキストファイルを 作 成 してみましょう Java 入 門 5 4.1 ディレクトリの 作 成 実 行 する 前 に 下 記 のディレクトリを 作 成 しておきましょう 作 成 ディレクトリ: c: tmp 4.2 実 行 eclipse での 実 行 結 果 の 例 を 示 します 図 4-1 WriteSample 実 行 結 果 作 成 されたテキストファイルを 見 てみましょう 図 に 例 を 示 します 図 4-2 作 成 されたテキストファイル 11

5 テキストファイルの 読 み 込 みと 書 き 込 み これまでに 作 成 したサンプルは 単 に 決 まりきった 文 字 列 をテキストファイルに 書 き 出 すだ けでした 実 際 には あるテキストファイルを 読 んで その 内 容 を 編 集 の 上 別 のファイルに 書 き 出 す ということがよくあります ここでは そのような 例 をやってみましょう テキストファイルを 読 むことと 書 くことの 基 礎 は 学 びました ここでは 文 字 列 の 編 集 に ついて 学 びましょう 5.1 String クラスのメソッド 文 字 列 を 扱 う 基 本 的 なクラスは String クラスです String クラスには じつにさまざまな メソッドがあります 次 に 主 なメソッドを 紹 介 します 5.1.1 文 字 列 の 比 較 二 つの 文 字 列 が 同 一 かどうかを 調 べるメソッドとして equals()メソッドがあります equals 宣 言 : public boolean equals(object anobject) 引 数 : anobject - String と 比 較 するオブジェクト( 通 常 は String オブジェクトを 指 定 します) 機 能 : String オブジェクト(の 文 字 列 )と 指 定 されたオブジェクト(の 文 字 列 )を 比 較 し ます 戻 り 値 : true - String オブジェクトと 指 定 されたオブジェクトとが 同 じ 文 字 列 であ る 場 合 false - String オブジェクトと 指 定 されたオブジェクトとが 異 なる 文 字 列 であ る 場 合 記 述 例 を 示 します String line = null; String astring = " 終 了 "; line = breader.readline(); if ( astring.equals(line) ) { // 文 字 列 が 一 致 else { // 文 字 列 が 不 一 致 //テキストファイルから 読 み 込 んだ 行 データ 図 5-1 equals メソッドの 記 述 例 12

NOTE if ( astring == line ) ではだめなのでしょうか この 場 合 には astring と line 変 数 が 同 じオブジェクトを 参 照 しているかどうか を 判 断 します ですから astring と line の 文 字 列 が 同 じであっても 別 のオブジェクトを 示 してい ますから false になってしまいます ケース A astring == line -----> true astring.eauals(line) -----> true astring String オブジェクト " 終 了 " line ケース B astring == line -----> false astring.eauals(line) -----> true astring line String オブジェクト " 終 了 " " 終 了 " ケース C astring == line -----> false astring.eauals(line) -----> false astring line String オブジェクト " 終 了 " "Java 入 門 " 図 5-2 == と equals の 違 い 5.1.2 文 字 列 の 検 索 String オブジェクトが 持 つ 文 字 列 の 中 から 指 定 の 文 字 / 文 字 列 を 検 索 するメソッドがい くつかあります startswith 宣 言 : public boolean startswith(string prefix) 引 数 : prefix - 検 索 する 文 字 列 を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 始 まるかどうかを 判 定 します 戻 り 値 : true - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 始 まる 場 合 false - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 始 まらない 場 合 13

記 述 例 を 示 します String filepath = "c:/tmp/sample.txt"; if (filepath.startswith("c:")) { System.out.println("c ドライブです "); else { System.out.println("c ドライブではありません "); 図 5-3 startswith メソッドの 記 述 例 endswith 宣 言 : public boolean endswith(string suffix) 引 数 : suffix - 検 索 する 文 字 列 を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 終 了 するかどうかを 判 定 します 戻 り 値 : true - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 終 了 する 場 合 false - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 で 終 了 しない 場 合 記 述 例 を 示 します String filepath = "c:/tmp/sample.txt"; if (filepath.endswith(".txt")) { System.out.println("テキストファイルです "); else { System.out.println("テキストファイルではありません "); 図 5-4 endswith メソッドの 記 述 例 contains 宣 言 : public boolean contains(charsequence s) 引 数 : s - 検 索 する 文 字 列 (を 持 つオブジェクト)を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 を 含 むかどうかを 判 定 し ます 戻 り 値 : true - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 を 含 む 場 合 false - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 を 含 まない 場 合 例 外 : NullPointerException - s が null の 場 合 NOTE CharSequence は 具 体 的 には String などです 14

記 述 例 を 示 します String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1"; if (address.contains(" 藤 沢 市 ")) { System.out.println(" 藤 沢 市 です "); else { System.out.println(" 藤 沢 市 ではありません "); 図 5-5 contains メソッドの 記 述 例 indexof 宣 言 : public int indexof(string str) 引 数 : str - 検 索 する 文 字 列 を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )が 指 定 された 部 分 文 字 列 が 最 初 に 出 現 する 位 置 のインデックスを 返 します 戻 り 値 : インデックス 値 - 引 数 で 指 定 した 文 字 列 がこの String オブジェクト 内 にあ る 場 合 は 最 初 の 部 分 文 字 列 の 最 初 の 文 字 のインデックス -1 - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 を 含 まない 場 合 NOTE ( 文 字 列 の)インデックスは 文 字 列 内 の 各 文 字 の 位 置 を 示 し 0 から 始 まる 値 で す この indexof()メソッドで 取 得 したインデックスを 使 って 後 述 の substring()メソッドを 使 って 文 字 列 を 抽 出 することができます 記 述 例 と 実 行 結 果 例 を 示 します String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1"; int index = address.indexof(" 藤 沢 "); if (index > 0) { System.out.println(" 最 初 の " 藤 沢 "のインデックス = " + index ); else { System.out.println(" " 藤 沢 "を 含 みません "); 実 行 結 果 例 最 初 の" 藤 沢 "のインデックス = 4 図 5-6 indexof メソッドの 記 述 例 NOTE 文 字 列 内 に "(ダブルコーテーション) を 含 めたいときには " と 書 きます 15

lastindexof 宣 言 : public int lastindexof(string str) 引 数 : str - 検 索 する 文 字 列 を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )が 指 定 された 部 分 文 字 列 が 最 後 に 出 現 する 位 置 のインデックスを 返 します 戻 り 値 : インデックス 値 - 引 数 で 指 定 した 文 字 列 がこの String オブジェクト 内 にあ る 場 合 は 最 後 の 部 分 文 字 列 の 最 初 の 文 字 のインデックス -1 - String オブジェクト(の 文 字 列 )が 指 定 された 文 字 列 を 含 まない 場 合 NOTE ( 文 字 列 の)インデックスは 文 字 列 内 の 各 文 字 の 位 置 を 示 し 0 から 始 まる 値 で す この indexof()メソッドで 取 得 したインデックスを 使 って 何 をするかは 後 で 学 びます 記 述 例 を 示 します String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1"; int index = address.lastindexof(" 藤 沢 "); if (index > 0) { System.out.println(" 最 後 の " 藤 沢 "のインデックス = " + index ); else { System.out.println(" " 藤 沢 "を 含 みません "); 実 行 結 果 例 最 後 の" 藤 沢 "のインデックス = 7 図 5-7 lastindexof メソッドの 記 述 例 NOTE ここで 示 した 文 字 列 のインデックスを 図 で 確 認 しておきましょう 文 字 列 インデックス 神 奈 川 県 藤 沢 市 藤 沢 1-1 0 1 2 3 4 5 6 7 8 9 10 11 最 初 の" 藤 沢 "のインデックス = 4 最 後 の" 藤 沢 "のインデックス = 7 図 5-8 文 字 列 のインデックス 16

5.1.3 文 字 列 の 抽 出 編 集 String オブジェクトが 持 つ 文 字 列 の 中 から 文 字 列 を 抽 出 したり 文 字 列 を 編 集 するメソ ッドもあります concat 宣 言 : public String concat(string str) 引 数 : str - 文 字 列 を 指 定 します 機 能 : String オブジェクト(の 文 字 列 )の 最 後 に 指 定 された 文 字 列 を 連 結 します 戻 り 値 : String- 連 結 した 文 字 列 を 表 す 新 しい String オブジェクト 記 述 例 と 実 行 結 果 例 を 示 します String title = " 住 所 : "; String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1"; System.out.println( title.concat(address) ); 実 行 結 果 例 住 所 : 神 奈 川 県 藤 沢 市 藤 沢 1-1 図 5-9 concat メソッドの 記 述 例 trim 宣 言 : public String trim() 引 数 : なし 機 能 : String オブジェクト(の 文 字 列 )の 先 頭 と 最 後 の 空 白 を 省 略 した 文 字 列 を 生 成 し ます 戻 り 値 : String- 先 頭 と 最 後 の 空 白 を 省 略 した 文 字 列 を 表 す 新 しい String オブジェ クト 記 述 例 と 実 行 結 果 例 を 示 します String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1 "; System.out.println(" 住 所 は" + address + "です "); System.out.println(" 住 所 は" + address.trim() + "です "); 実 行 結 果 例 住 所 は 神 奈 川 県 藤 沢 市 藤 沢 1-1 です 住 所 は 神 奈 川 県 藤 沢 市 藤 沢 1-1 です 図 5-10 trim メソッドの 記 述 例 17

substring 宣 言 : public String substring(int beginindex) 引 数 : beginindex - 開 始 インデックス 機 能 : String オブジェクト(の 文 字 列 )の 指 定 されたインデックスで 始 まり この 文 字 列 の 最 後 までの 文 字 列 を 生 成 します 戻 り 値 : 部 分 文 字 列 を 表 す 新 しい String オブジェクト 記 述 例 と 実 行 結 果 例 を 示 します たとえば 開 始 インデックスに 先 の indexof()メソッ ドで 取 得 したインデックスを 使 うことができます String address = " 神 奈 川 県 藤 沢 市 藤 沢 1-1"; int index = address.indexof(" 藤 沢 市 "); if (index > 0) { System.out.println(" 住 所 は 市 内 " + address.substring(index + 3) + "です "); else { System.out.println(" 住 所 は 市 内 ではありません "); 実 行 結 果 例 住 所 は 市 内 藤 沢 1-1 です 図 5-11 substring メソッドの 記 述 例 split 宣 言 : public String[] split(string regex) 引 数 : regex - 区 切 り 文 字 / 文 字 列 の 正 規 表 現 機 能 : String オブジェクト(の 文 字 列 ) を 指 定 された 正 規 表 現 に 一 致 する 位 置 で 分 割 します 戻 り 値 : String オブジェクト(の 文 字 列 )を 指 定 された 正 規 表 現 に 一 致 する 位 置 で 分 割 された 文 字 列 の 配 列 例 外 : PatternSyntaxException - 正 規 表 現 の 構 文 が 無 効 な 場 合 記 述 例 と 実 行 結 果 の 例 を 見 る 前 に ここで 示 されている 正 規 表 現 について 簡 単 に 学 んでおきましょう 18

5.1.3.1 正 規 表 現 の 概 要 正 規 表 現 とは いくつかの 文 字 列 の 集 まりを 一 つの 文 字 列 形 式 で 表 現 するための 方 法 で す 特 に 文 字 列 の 中 から 部 分 文 字 列 を 検 索 する 場 合 によく 用 いられます たとえば 次 の 文 字 列 を 見 てください no, name, tel, mail 100011, K.Sato, 090-9876-5432, sato@east.lites.jp 100023, S.Tanaka, 090-1234-5678, tanaka@west.lites.jp 100052, H.Watanabe, 03-111-9876, watanabe@mid.lites.jp これらは 従 業 員 番 号 氏 名 電 話 番 号 メールアドレスのデータと 考 えましょう こ れらの 文 字 列 データの 中 から 氏 名 だけを 見 つけるとか メールアドレスだけを 見 つけ るような 場 合 検 索 文 字 列 をどう 表 現 したらよいでしょうか そのような 場 合 見 つけたい 文 字 列 がどんな 文 字 で 構 成 されているか という 点 に 着 目 して その 文 字 列 のパターンのようなものを 表 現 できたら 便 利 ですね たとえば 次 のようなパターンで 区 別 できないでしょうか (1) 従 業 員 番 号 は 数 字 だけで 構 成 されて しかも 6 桁 と 決 まっている (2) 氏 名 は 英 文 字 "."(ドット) 英 文 字 の 順 に 構 成 されている (3) 電 話 番 号 は 数 字 と "-"(ハイフン)で 構 成 されている (4) メールアドレスは 英 文 字 列 と"."(ドット)が"@"(アットマーク)でつながっている まずは よく 使 われる 基 本 的 な 文 字 のパターンを 見 ておきましょう これらのパターン を 構 成 する 要 素 として メタキャラクタ が 用 意 されています メタキャラクタ は 文 字 や 数 字 の 種 類 文 字 の 位 置 文 字 数 などを 表 現 するための 特 殊 な 文 字 列 です 代 表 的 なメタキャラクタを 表 に 示 します 表 5-1 文 字 や 数 字 の 種 類 を 示 すメタキャラクタ メタキャラクタ 意 味 d 数 字 1 文 字 s 任 意 の 空 白 文 字 (スペース タブ 改 行 復 帰 )1 文 字 w 任 意 の 英 数 字 と_(アンダースコア: underscore) 1 文 字 [ 文 字 セット] 文 字 セットのいずれかの 文 字 1 文 字 文 字 セットを 使 った 例 [0-9] 数 字 0-9 の 任 意 1 文 字 [a-z] 英 小 文 字 a-z の 任 意 1 文 字 [A-Z] 英 大 文 字 A から Z の 任 意 1 文 字 [ABC] A, B, C いずれかの 文 字 1 文 字 19

表 5-2 メタキャラクタ ^ 行 頭 $ 行 末 文 字 の 位 置 を 示 すメタキャラクタ 意 味 ( 例 ) ^a 行 頭 の a z$ 行 末 の z 表 5-3 文 字 数 を 示 すメタキャラクタ メタキャラクタ 意 味 * 直 前 の 文 字 が 0 個 以 上 + 直 前 の 文 字 が 1 個 以 上? 直 前 の 文 字 が 0 個 か 1 個 {n 直 前 の 文 字 が n 個 文 字 や 数 字 の 種 類 を 示 すメタキャラクタの 直 後 に 文 字 数 を 示 すメタキャラクタを 使 用 し ます ( 例 ) [a-za-z]+ 1 文 字 以 上 の 英 字 [0-9]{7 7 桁 の 数 字 さて 上 の 例 に 戻 りましょう パターンの 例 を 考 えてみましょう あくまでも 例 ですの で 次 に 示 したパターン 以 外 も 考 えられます (1) 従 業 員 番 号 は 数 字 だけで 構 成 されて しかも 6 桁 と 決 まっている パターン: [0-9]{6 (2) 氏 名 は 英 文 字 "."(ドット) 英 文 字 の 順 に 構 成 されている パターン: [a-za-z]+.[a-za-z]+ (3) 電 話 番 号 は 数 字 と "-"(ハイフン)で 構 成 されている [0-9]+-[0-9]+-[0-9]+ (4) メールアドレスは 英 文 字 列 と"."(ドット)が"@"(アットマーク)でつながっている [a-za-z]+@[a-za-z.]+ 正 規 表 現 はなかなか 奥 深 く それだけで 一 冊 の 本 になるほどですが 実 用 面 では 比 較 的 簡 単 なパターンの 使 用 で 問 題 が 解 決 することが 多 いので あまり 深 刻 にならずとも 良 20

いと 思 います さて split()メソッドに 戻 り spilit()メソッドの 記 述 例 と 実 行 例 を 見 てみましょう この 例 では 引 数 に ","(カンマ)を 指 定 していますので 図 のように String 配 列 が 生 成 さ れます String data = " no,name,tel,mail"; String[] tokens = data.split(","); for (int i = 0; i < tokens.length;i++) { System.out.println("token[" + i + "] = " + tokens[i]); 実 行 結 果 例 token[0] = no token[1] = name token[2] = tel token[3] = mail tokens tokens[0] tokens[1] tokens[2] tokens[3] "no" "name" "tel" "mail" 図 5-12 split メソッドの 記 述 例 さんざん 正 規 表 現 のことを 言 っておきながら split()メソッドの 記 述 例 と 実 行 例 は 実 に 簡 単 で 正 規 表 現 を 使 っていません でも このような 例 は CSV ファイルの 処 理 など には 有 効 ですので ご 容 赦 ください NOTE CSV ファイルは Comma Separated Value ファイルの 略 です ","(カンマ)でデータを 区 切 って 記 述 するルールがあります 詳 しくは http://www.rfc-editor.org/rfc/rfc4180.txt を 参 照 してください 代 表 的 な 例 として Excel データを CSV 形 式 ファイルに 変 換 して 他 のアプリケーションで 利 用 するケースがあります 21

6 テキストファイルの 読 み 込 みと 編 集 出 力 これまでの 学 習 で テキストファイルの 読 み 込 み 書 き 込 み そして String クラスの 各 種 メ ソッドなどについて 学 びました この 章 では これまで 学 んだことをベースに 次 のような 演 習 をやってみましょう 演 習 課 題 テキストファイルを 読 み 各 行 のデータの 先 頭 に 行 番 号 を 追 加 して 別 のテキ ストファイルとして 書 き 出 すプログラムを 作 成 実 行 してください ( 例 ) 元 のテキストファイル テキストファイルです This is the sample text file. end of the file. 出 力 されるテキストファイル 1: テキストファイルです 2: This is the sample text file. 3: end of the file. 6.1 クラス 構 成 まず クラス 構 成 を 考 えます 読 み 出 すテキストファイルを 扱 うためのクラスと 書 き 出 す テキストファイルを 扱 うクラスが 必 要 ですね それと 行 を 編 集 するためのメソッドがどこ かに 必 要 です 今 回 は 制 御 を 担 当 する main()メソッドを 持 つクラスに 含 ませましょう 図 に この 演 習 課 題 のクラス 構 成 を 示 します - String filepath TextFileReader SampleFileConverter + TextFileReader(String filepath) + readline(): boolean + close(): void + iserroroccurred() + main(string[] args): void - addlineno(string line): String - String filepath TextFileWriter + TextFileWriter(String filepath) + write(): void + close(): void + iserroroccurred() 図 6-1 演 習 課 題 のクラス 構 成 ( 概 要 ) 図 を 見 て だいたいのイメージはつかめますね 22

(1) SampleFileConverter クラスの addlineno()メソッド 宣 言 : public String addkineno(string line) 引 数 : line - 1 行 分 の 文 字 列 を 持 つ String オブジェクト 機 能 : 指 定 された String オブジェクト(の 文 字 列 ) の 先 頭 に 行 番 号 を 追 加 します 戻 り 値 : 先 頭 に 行 番 号 を 追 加 された 文 字 列 を 持 つ String オブジェクト (2) TextFileReader と TextFileWriter のコンストラクタ TextFileReader と TextFileWriter のコンストラクタでは それぞれ 指 定 されたファイ ルの 読 み 出 し 書 き 出 しのための 準 備 を 行 います この 際 に IOException などの 例 外 が 発 生 することがあります コンストラクタでは 戻 り 値 を 返 せませんので コール 元 (ここでは SampleFileConverter)が コンストラクタ でエラーが 発 生 したかどうかを (このままでは)すぐには 判 断 できません 対 策 として 次 のようなことが 考 えられます 案 -1) 例 外 発 生 で stacktrace してプログラムを 終 わらせる つまり 何 らの 対 処 もしな い 方 法 です 案 -2) コンストラクタでエラーを 再 スローし SampleFileConverter でキャッチする ただし この 方 法 についてはまだ 学 んでいませんね 案 -3) TextFileReader と TextFileWriter にエラーが 発 生 したことを 示 す 属 性 をもたせ コール 元 (ここでは SampleFileConverter)から 問 い 合 わせるこどできるメソッド を 用 意 する 案 -4) TextFileReader と TextFileWriter にエラーが 発 生 したことを 示 す 属 性 をもたせ readline() write()でエラーを 返 す ここでは 案 -3) を 採 用 しています その 他 不 都 合 があったらクラスのメソッドやメンバー 変 数 を 変 更 追 加 しましょう 6.2 ソースコード まずは SampleFileConverter のソースコードを 書 いてみましょう line 1 2 3 4 5 6 7 リスト 6-1 SampleFileConverter.java SampleFileConverter.java package jp.lites.study.java; public class SampleFileConverter { static int lineno = 0; public static void main(string[] args) { 23

line 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 32 33 34 35 36 37 38 39 40 41 Java 入 門 5 SampleFileConverter.java String inputfilepath = "d:/tmp/nosample.txt"; String outputfilepath = "d:/tmp/outsample.txt"; TextFileReader inputfile = new TextFileReader(inputFilePath); if (inputfile.iserroroccurred()) { System.out.println(" 入 力 ファイルにエラーがあったのでファイル 変 換 を 中 止 しました "); return; TextFileWriter outputfile = new TextFileWriter(outputFilePath); if (outputfile.iserroroccurred()) { System.out.println(" 出 力 ファイルにエラーがあったのでファイル 変 換 を 中 止 しました "); return; String line = null; while ((line = inputfile.readline())!= null) { line = addlineno(line); outputfile.write(line); inputfile.close(); outputfile.close(); System.out.println("ファイルを 変 換 しました "); private static String addlineno(string str) { String no = String.format("%d: ", ++lineno); return no.concat(str); 37 行 目 String にも format()メソッドがあります 24

line 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 32 33 34 35 36 リスト 6-2 TextFileReader.java TextFileReader.java package jp.lites.study.java; import java.io.file; import java.io.filenotfoundexception; import java.io.filereader; import java.io.bufferedreader; import java.io.ioexception; public class TextFileReader { private boolean error = true; private String filepath = ""; private File file = null; private FileReader filereader = null; private BufferedReader breader = null; public TextFileReader(String filepath) { this.filepath = filepath; file = new File(this.filePath); try { filereader = new FileReader(file); breader = new BufferedReader(fileReader); error = false; catch (FileNotFoundException e) { System.out.println(" 指 定 されたファイルが 見 つかりません "); public String readline() { String line = null;; try { line= breader.readline(); 25

line 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 Java 入 門 5 TextFileReader.java return line; catch (IOException e) { System.out.println("ファイル 読 み 込 みでエラーが 発 生 しました "); return null; public void close() { String line = null;; try { breader.close(); catch (IOException e) { System.out.println("ファイルクローズでエラーが 発 生 しました "); public boolean iserroroccurred() { return error; line 1 2 3 4 5 6 7 8 9 リスト 6-3 TextFileWriter.java TextFileWriter.java package jp.lites.study.java; import java.io.bufferedreader; import java.io.file; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.io.printwriter; 26

line 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 TextFileWriter.java public class TextFileWriter { private boolean error = true; private String filepath = ""; private File file = null; private PrintWriter pw = null; public TextFileWriter(String filepath) { this.filepath = filepath; file = new File(this.filePath); try { file.createnewfile(); pw = new PrintWriter(file); error = false; catch (FileNotFoundException e) { System.out.println("ファイル 作 成 できませんでした "); catch (IOException e) { System.out.println("ファイル 作 成 でエラーが 発 生 しました "); public void write(string line) { pw.println(line); public void close() { pw.close(); public boolean iserroroccurred() { return error; 27

6.3 eclipse でクラスを 作 成 実 行 上 記 のクラスを eclipse で 作 成 実 行 してください 実 行 結 果 の 例 を 示 します 図 6-2 SampleFileConverter 実 行 結 果 の 例 28

7 演 習 7.1 CSV ファイルの 読 み 込 みと 編 集 出 力 下 記 の CSV ファイルを 読 み 込 んで 名 前 メールアドレスを 抽 出 して 指 定 の CSV 形 式 で ファイルに 出 力 するプログラムを 作 成 実 行 してください (1) CSV ファイルの 形 式 メンバー 番 号, 名 前, 住 所, 電 話 番 号,メールアドレス, 備 考 (2) 出 力 CSV 形 式 名 前,メールアドレス 7.2 2 つの CSV ファイルの 読 み 込 みと 編 集 出 力 7.1 の 演 習 で 出 力 CSV 形 式 を 示 した CSV ファイルを 読 んで 出 力 CSV 形 式 を 決 定 するよ うに 変 更 してください (1) CSV ファイルの 形 式 メンバー 番 号, 名 前, 住 所, 電 話 番 号,メールアドレス, 備 考 (2) 出 力 CSV 形 式 を 示 した CSV ファイル 名 前,メールアドレス 29

8 付 録 8.1 TBD. 30

9 改 定 履 歴 (1) 2010/09/23 K.Yanai ドラフト 作 成 31

10 索 引 32