- Kensaku
- 常連さん
- 会議室デビュー日: 2003/02/16
- 投稿数: 22
|
投稿日時: 2005-09-22 11:58
ファイル操作と切り出し作業を分けてみました。
コード: |
|
public void extractFile() throws IOException {
FileReader fileReader = null;
try {
fileReader = new FileReader(inputFileName);
FileWriter fileWriter = null;
try {
fileWriter = new FileWriter(outputFileName);
extract(fileReader, fileWriter);
} finally {
if (fileWriter != null) {
fileWriter.close();
}
}
} finally {
if (fileReader != null) {
fileReader.close();
}
}
}
private void extract(Reader reader, Writer writer)
throws IOException {
BufferedReader bufferedReader = new BufferedReader(reader);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
PrintWriter printWriter = new PrintWriter(bufferedWriter);
boolean isToWrite = false;//書き出すべきか?
String line;
while ((line = bufferedReader.readLine()) != null) {//EOFまで読み込み
if (isToWrite) {//書き込みモードか?
printWriter.println(line);
if (p2.matcher(line).find()) {//終了文字列にマッチ
isToWrite = false;
}
continue;
}
if (p1.matcher(line).find()) {//開始文字列にマッチ
printWriter.println(line);
isToWrite = true;
}
}
printWriter.flush();
}
|
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-09-22 12:13
こんにちは、じゃんぬ です。
引用: |
|
masaさんの書き込み (2005-09-21 23:03) より:
CodeComplete という本の存在は初めて知ったのですが、ネット上の評判を見る限り
かなりの名著のようですね。出版された時期は少々昔のようですが、今読んでみても
時代遅れではない内容でしょうか?
|
時代遅れだなんて、トンでもないですよw
どの言語にも通用するコンストラクションな部分ですからね。
と、偉そうに言ってますが、実は私も読んでから名著だということを知りました。
(実は、GDNJ というコミュニティの 投稿アワード で頂いたんです)
それまでは、本なんて全然読まなかったのですが、ハマりましたよ。
これは胸を張ってお勧めします。
# 私も脱線すいません。(*_ _)
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- masa
- 大ベテラン
- 会議室デビュー日: 2005/05/11
- 投稿数: 108
|
投稿日時: 2005-09-22 12:35
こんにちは。
ちいにぃ さん、じゃんぬ さん、ありがとうございます。
かなーり読み応えがありそうな内容ですね。
早速購入してみます^^
|
- さる
- ぬし
- 会議室デビュー日: 2005/07/14
- 投稿数: 276
- お住まい・勤務地: 実家戻ったw
|
投稿日時: 2005-09-22 13:08
引用: |
|
Kensakuさんの書き込み (2005-09-22 11:58) より:
ファイル操作と切り出し作業を分けてみました。
|
間違ってるという訳ではありません、が、ちと質問!
なんで分けてみました?
# Exceptionが発生した時にログに吐き出してくれると良さそうですね〜。
|
- Kensaku
- 常連さん
- 会議室デビュー日: 2003/02/16
- 投稿数: 22
|
投稿日時: 2005-09-22 19:08
こんばんは、さるさん。
引用: |
|
さるさんの書き込み (2005-09-22 13:08) より:
引用: |
|
Kensakuさんの書き込み (2005-09-22 11:58) より:
ファイル操作と切り出し作業を分けてみました。
|
間違ってるという訳ではありません、が、ちと質問!
なんで分けてみました?
# Exceptionが発生した時にログに吐き出してくれると良さそうですね〜。
|
ファイルからストリームを生成する機能と
ストリームを操作して切り出しをする機能が
本来別々の機能だと思ったからです。
ストリームを操作して切り出しをする機能に抽象化したので
例えば extractNet() のような機能追加もしやすいと思います。
もっと抽象化を進めたいならば extract メソッドの引数を
InputStream,OutputStream にするといいかもしれません。
文字エンコーディングの切り替えが追加しやすくなります。
Exceptionが発生した時にログに吐き出す処理は extractFile()
を呼び出すメソッドの方で行った方がいいと思いましたので
含めませんでした。
|
- さる
- ぬし
- 会議室デビュー日: 2005/07/14
- 投稿数: 276
- お住まい・勤務地: 実家戻ったw
|
投稿日時: 2005-09-22 19:20
引用: |
|
Kensakuさんの書き込み (2005-09-22 19:08) より:
ストリームを操作して切り出しをする機能に抽象化したので
例えば extractNet() のような機能追加もしやすいと思います。
|
extractNet() のような機能追加する時は現状のソースに処理を追加します?
それともFiletestクラスをextendsしますか?
extendsした時はどういったクラス名になるんでしょうねぇ〜。
どんなソースになるんでしょうねぇ〜。
|