質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

3回答

5304閲覧

Javaで雛形ファイルをコピーして文字列置換したい

javabigineer

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/08/28 05:48

Javaで、雛形ファイルをコピーして、新たに作成したファイル内のテキストを
文字列置換する処理を作成したいです。
下記コードにより、ファイルコピーする処理はできています。

public static void fileCopy(String org, String copy){ try { //Fileオブジェクトを生成する FileInputStream fis = new FileInputStream(org); FileOutputStream fos = new FileOutputStream(copy); //入力ファイルをそのまま出力ファイルに書き出す byte buf[] = new byte[256]; int len; while ((len = fis.read(buf)) != -1) { fos.write(buf, 0, len); } //終了処理 fos.flush(); fos.close(); fis.close(); System.out.println("コピーが完了しました。"); } catch (IOException ex) { //例外時処理 System.out.println("コピーに失敗しました。"); ex.printStackTrace(); }

上記処理により作成したファイル内の文字列を置換する処理の組み方を教えてほしいです
!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

処理の組み方とのことなので。

現在FileInputStreamとFileOutputStreamで処理を行っていますが、これはバイト列での読み取り書き込みになります。
テキストファイルが前提なのであれば、文字列を読み込むクラスを使います。
読み込みには
Scannerを使った方が楽ですかね。(BufferedReaderとInputStreamReaderを使う手もあります。)
それで1行ずつ読み込むことができます。

テキストを読み込むときには、charSet (文字エンコード)を正しく指定しないと文字化けしますので気を付けてください。これはScannerのインスタンス作成の時に指定できます。

1行ずつ読み込めたら、読み込んだ文字列に対して置換を実施します。

あとは置換された文字列を新しいファイルに書き込みます。
BufferedWriter、OutputStreamWriterをFileOutputStreamに組み合わせて書き込んでいきます。
書き込むときも文字コードが重要です。これは書き込んだ結果のテキストファイルがどの文字コードになるかにかかってきます。
charsetはOutputStreamWriterで指定します。

クラスがたくさん出てきましたが、基本の形は今とそれほどかわりません。
テキストを読む役割を持つクラスに置き換えていくイメージです。その途中で置換を行います。

投稿2016/08/28 06:11

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

javabigineer

2016/08/28 06:58

ありがとうございます。 もしよければ、コードとかありませんか? 文章読んでたら混乱してしまって。。
flied_onion

2016/08/28 07:08

これぐらいの規模だと答えになってしまうので(ここは代わりにやってあげるサイトではありませんので)。 クラス名で検索すればいろいろ出てくると思いますよ。 まずはScannerで全行読むだけのコードを書いてみては。 エラーが出たら質問に追記してくれれば、それは対応できると思います。
guest

0

質問の主旨(プログラミング方法を学びたい?)からずれるかもしれませんが、 Jakarta Velocity を使うのはどうでしょう。やりたいことによっては、自分で細々プログラミングするより拡張性に優れたものができます。

【Java】Javaテンプレートエンジン(Velocity)の基本的な使い方

投稿2016/08/30 10:01

mit0223

総合スコア3401

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

文字列置換は、StringのreplaceAllを使えば実現できるでしょう。以下はテストコードです、

java

1@Test 2public void test() { 3 String target = "これは置換する前の文字列です。処理が成功する前と変わったでしょうか"; 4 5 String replaced = target.replaceAll("する前", "した後"); 6 7 assertEquals("これは置換した後の文字列です。処理が成功した後と変わったでしょうか", replaced); 8}

投稿2016/08/28 11:00

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問