- - PR -
txtへの出入力についての質問です。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-27 17:56
現在勤め先の研修にて擬似自動販売機システムの作成をしています。
txtをBufferedReader等java.ioのクラスを利用して読み込み、そのデータ(商品名、価格、在庫)をArrayListを使用してListに格納してそれを元に商品のクラスを作成し、販売等の処理は商品クラスを使用して行っているのですが、肝心のtxtファイルの更新ができないでいます。 自分なりにAPIや入門本などで調べてはいるのですが、いい方法が見つからないので相談させていただくことにしました。 ご回答お待ちしています。 | ||||
|
投稿日時: 2007-02-27 18:06
ファイルの入出力ですか、最近は知らない方も居ますよね、現場でも。
Readerで読み込むのであれば、Writerで書き込むと考えられませんか? これをヒントにAPIを調べれば直ぐに解りますよ。 | ||||
|
投稿日時: 2007-02-27 18:06
「更新ができない」とはどういうことか説明してください。 あなたがどのように更新できないのかがわからないので、アドバイスのしようがありません。 IOExceptionがでるのか、単に方法論がわからないのか。 エラーが出る場合はスタックトレースをコピー&ペーストで全文掲載しましょう。 | ||||
|
投稿日時: 2007-02-27 18:17
曖昧な質問をしてしまいすみません。方法論が分からずにいます。
Writerを使用して新規にテキストに書き込むことはできるのですが、テキストの一部分のデータを書き換える事ができないです。 "Cola 000000012000002"このようなテキストの数字(末尾の2の部分)が在庫のデータなのですが、ここだけを書き換えたいと思っています。 今回の自動販売機システムの作成が自分で初めて組むプログラムなので、質問も要領をえない質問をしてしまっているかとは思いますが、他のかたの質問を参考にまたあらためて書き込ませていただきます。 そしてまたAPIをじっくりと見直してみます。 | ||||
|
投稿日時: 2007-02-27 18:38
安直な方法は、
1.データを全部読み込む 2.該当箇所のみデータを書き換える 3.データをファイルに全部書き出す という方法論ですね。 当然ながらデータサイズが大きくなればパフォーマンスは劣化します。 ファイルを部分的に書き換えたいのであれば、 java.io.RandomAccessFileを用いるか、 java.nioパッケージを用いることになるでしょう。 データが多く、ファイルI/O周りの制御が大変なのであれば、 RDBMS(いわゆるデータベース)を採用するのが通常です。 | ||||
|
投稿日時: 2007-02-27 18:39
るぱんです。
読み込んで置換して出力する? この場合なのであれば、 java.lang.StringクラスのreplaceAllと言うメソッドを調べると吉。 ただし、正規表現なので、付随して調べる必要有り。 最も簡単なのは、改行ごとにArrayList<String>で持っておいて、 中身を新作Stringに入れ替える・・・って所かな? まぁ、読み込みながら・・・になるんだろうけど。 http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html ここで、replaceとかsplitとかってメソッドを調べてごらん。 [編集] かぶった上に、負けた。。。orz まぁ、別のやり方もあるってことで。笑 先輩がどんな仕様出したかにもよるしね。(前向いてみた。苦笑) 仕様が曖昧なのであれば、何回も聞きなおさないと。 仕様を決めて貰うの待ってたんじゃ、いつまでたってもモノが出来やしない。 (経験談) [/編集] [ メッセージ編集済み 編集者: るぱん 編集日時 2007-02-27 18:42 ] | ||||
|
投稿日時: 2007-02-27 19:02
研修であれば、ココで聞いて答えを得るより、
担当者に分からない、教えてほしいと伝えましょうよ。 研修の担当者は、誰が何で躓いているのか、 何を理解しているのがを把握したいと思うのですよ。 よく理解もしないまま回答を得て、 それで担当者からOKが出されても、 後々みんな困ることになると思いますよ。 | ||||
|
投稿日時: 2007-02-27 19:42
早速の回答をありがとうございます。
研修用なのでファイルも重くないので、全書き換えでやってみようと思います。 担当の先輩にも質問はしているのですが、Cなら分かるけれど、Javaは、、、、という事だったのでしばらくはみなさんにいただいた回答をもとに一人でやってみようと思います。 |
1