- PR -

File型で読み取る時の速度

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-03-20 19:04
こんにちは。

現在、Java + strutsでブログのような機能を作ろうと思っているのですが、その時気にしているのが、DBを使わず、ファイルにコメント等を付け足して行く場合の、処理速度についてです。

ブログ記述とコメントとトラックバックの3枚を別ファイルにし、ブログ記述のキーで他の2ファイルの検索に行こうと考えてます。Javaの場合Fileをフルパスファイルでインスタンスを作成する時、一度全てメモリ上に保持すると思っていたのですが、どうでしょうか?

また、Javaのファイル操作で一番軽い保存・編集処理はどんなクラスになるのでしょうか?
CGIの経験は無いのですが、ファイルサイズは無制限と言うのを聞いてできればJavaでもできないものかと思ってます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-03-20 21:13
引用:

Javaの場合Fileをフルパスファイルでインスタンスを作成する時、一度全てメモリ上に保持すると思っていたのですが、どうでしょうか?


あくまでパスを管理しているだけです。

引用:

また、Javaのファイル操作で一番軽い保存・編集処理はどんなクラスになるのでしょうか?


FileInputStream/FileOutputStreamでいかがでしょうか。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-03-20 22:10
ありがとうございます。

そうだったんですか、ファイルの出力はappendで追加しようと思ってるので、それほど時間は掛からないと思ってるんですが、ブログのようなものなので、記事に対するコメントなどの紐付けに結構時間が掛かるんではないかと思ってます。

FileReader,BufferedReaderのようなのが、だめなんでしょうか?
>FileInputStream/FileOutputStreamも一度調べてみます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-03-20 23:28
引用:

FileReader,BufferedReaderのようなのが、だめなんでしょうか?


そもそも利用目的が違います。

FileReaderはbyteではなくcharでの読み込みをサポートします。

・byteによる入出力がInputStream/OutputStream系
・charによる入出力がReader/Writer系

と覚えておくとよいでしょう。byteではなくcharでの読み書きは、
エンコーディングの概念が付きまとうので、注意が必要です。
特にFileReader/FileWriterは、明示的にエンコーディングを指定する方法がないので、
余計に注意が必要です。


BufferedReaderは様々なReaderに対してバッファリングをサポートするためのもので、
ファイル専用というものではありません。
どのみち最終的な読み込み元は、FileInputStreamになります。


面倒な事をやるのがいやであれば、素直にRDBを使う事をオススメします。
大体どんな環境でも早い出力機能というのは、
ファイルの後ろに書き込む操作くらいです。
それなら最初からデータの関連付け、挿入、更新をサポートしてくれるRDBに任せるべきです。

環境によってMySQL等のRDBの利用がサポートされない場合もあるかもしれませんが、
少なくともJavaが動く環境であれば、PureJavaで実装された、
H2、HSQLDB、Apache Derby(JavaDB)等が動きます。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-03-21 14:27
ありがとうございます。

Fileの概念有難うございました、とても分かり易く知りませんでした、いつもFileReaderを使ってましたがそういう事だったんですか。

また、DBに関してはおっしゃるようにJavaのDBを使うようにします。パフォーマンスが一番気がかりでして、ファイルにするのも同じだし、こっちの方が後々安心できそうです。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)