-PR-
解決済み

Javaでファイルの書き換え

  • 困ってます
  • 質問No.94481
  • 閲覧数1412
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 69% (145/210)

Javaでファイルの内容の書き換えをしようとしているのですが、これはどのようにすればよろしいのでしょうか?

今現在FileReaderを使ってのファイルの読み込み、PrintWriterを使ってのファイルの新規作成、書き込みができるのですが、ファイルの書き換えがどうしていいか分かりません。

例えば、a.txtというファイル名で
ファイルの中身が
1.fuyu.A
2.haru.B
3.natsu.C
4.aki.B
というように番号.名前.顧客の種別(A,B,Cで判別)を表しているファイルがあった時に、fuyuの種別をBに変更しようとしたらどのようにすればよいのでしょうか?

PrintWriterを使って、一旦他のファイル名で変更したい部分を変更しながらコピーして、そのファイルをa.txtに変更すれば大丈夫だなぁ、とは思ったものの、もっと簡単な方法がありそうなので質問してみました。よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2

java.io パッケージの中に、RandomAccessFileクラスがあります。
CやC++でもありますが、ファイルのランダムアクセス用のクラスで、これを使えばファイル内の任意の位置にアクセスすることができます。

使い方はJavadocを読んでもらえれば分かると思いますが、
1.getFilePointer()で現在位置を取得
2.write()でファイルへの書き込み
3.seek()で書き込み後の位置のファイルポインタを移動する
というのが、簡単な流れになると思います。

ただし、ファイルポインタには先頭からのバイト数が格納されるので、改行などの不可視の文字コードなども考慮する必要があり、かなり使いづらいと思います。

ファイルの中身を全て探索し文字列を置換する今回のような場合には、ファイルから読み出した情報を置換しながら別名ファイルにコピーして元のファイル名に戻すのが一番簡単な方法だと思います。
お礼コメント
fuyu

お礼率 69% (145/210)

回答ありがとうございます。

「ファイルポインタには先頭からのバイト数が格納されるので、改行などの不可視の文字コードなども考慮する必要があり」
ということで、これは使いづらそうですねぇ。

お勧め通り、
「ファイルから読み出した情報を置換しながら別名ファイルにコピーして元のファイル名に戻す」という方法でやりたいと思います。ありがとうございました。
投稿日時 - 2001-06-24 22:30:08
関連するQ&A
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1

ファイルの書き換えと言うより、ファイル名の変更ですね? それでしたら、FileクラスのrenameTo()メソッドでできます。 try { File oldFile = new File("fuyu.A"); File newFile = new File("fuyu.B"); if(oldFile.renameTo(newFile) ...続きを読む
ファイルの書き換えと言うより、ファイル名の変更ですね?
それでしたら、FileクラスのrenameTo()メソッドでできます。

try {
File oldFile = new File("fuyu.A");
File newFile = new File("fuyu.B");

if(oldFile.renameTo(newFile) == true) {
System.out.println("リネームしました。");
} else {
System.out.println("リネームできませんでした。");
}
} catch(SecurityException e) {
System.err.println("セキュリティの制限により、リネームできません。");
} catch(NullPointerException e) {
System.err.println("不正なファイル名です");
}
補足コメント
fuyu

お礼率 69% (145/210)

回答ありがとうございます。

すいません。書き間違いがありました。
「番号.名前.顧客の種別(A,B,Cで判別)を表しているファイルがあった時に」
ではなく、
「番号.名前.顧客の種別(A,B,Cで判別)を表しているデータがあった時に」
が正しいです。
このデータの書きかえをしたい、というのが今回の質問です。
投稿日時 - 2001-06-23 19:55:59


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ