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

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

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

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

Q&A

2回答

1900閲覧

Javaのファイル操作、文字列置換について

S.K1994

総合スコア34

Java

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

0グッド

1クリップ

投稿2019/04/06 03:59

編集2022/01/12 10:55

前提・実現したいこと

Javaの学習をしております。ファイルごとに拡張子で絞り込みをし、記述の内容を一括で変換するプログラムを作成したい。

Javaで作られたプログラムのフレームワークによって記述が違う部分を置換したいのです。
現状、ファイル操作を使い特定の拡張子のファイルを抽出し、BufferedReaderのreadLineメソッドを使用し、1行ずつ文字列を読み込み、特定の文字列を含む行を見つけ出し、特定の文字列を特定の文字列に置換したいです。

発生している問題・エラーメッセージ

1ファイル内の文字列全てを読み込めていない。
2文字列を置換するために、BufferedWriterを使用する必要があると思うのですが、BufferedWriterとどのようにくみあわせて実装すればいいのかがわからない。

該当のソースコード

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FilenameFilter; import java.io.IOException; public class JSP { public void file() throws IOException{ FilenameFilter filter= new FilenameFilter() { @Override public boolean accept(File file, String str) { if(str.indexOf("jsp") != -1) { return true; }else { return false; } } }; File[] list = new File("./").listFiles(filter); if(list != null) { for(int i= 0; i<list.length; i++) { if(list[i].isFile()) { System.out.println("ファイル名" + list[i]); FileReader file = new FileReader(list[i]); //BufferedReaderでフィルターを貼り、readLine()で1行ずつ読み込む BufferedReader br = new BufferedReader(file); String data = br.readLine(); while(data != null) { if(data.equals(".*apple")) { String str = data.replaceAll("apple", "aiueo"); System.out.println(str); data = br.readLine(); } } br.close(); } } }else { System.out.println("JPSファイルはありません"); } } } コード
import java.io.IOException; public class Main { public static void main(String[] args) throws IOException{ JSP jsp = new JSP(); jsp.file(); } } コード
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% System.out.println("apple"); %> </body> </html> コード
ソースコード

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/04/06 04:46

ろくなことが起きない
S.K1994

2019/04/06 09:04

迷惑なので無意味な言動はやめてください。
guest

回答2

0

java

1data.equals(".*apple")

なので、その行の文字列が、.*apple と全く同じにならないと変換対象になりません。

java

1data.indexOf("apple") > -1

で良いかと。

投稿2019/04/08 09:00

A-pZ

総合スコア12011

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

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

0

1ファイル内の文字列全てを読み込めていない。

行毎の読み込みを行うはずの while 文内で, readLine が, 文字列を探す if 文(これもおそらく間違っています)の中に入ってしまっています.

2文字列を置換するために、BufferedWriterを使用する必要があると思うのですが、BufferedWriterとどのようにくみあわせて実装すればいいのかがわからない。

FileWriter を生成して BufferdWriter の生成時にコンストラクタで渡せば, write メソッドで書き込めると思います.

投稿2019/04/06 04:45

編集2019/04/06 04:49
jimbe

総合スコア12545

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

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

退会済みユーザー

退会済みユーザー

2019/04/06 04:49

pineaiueo(ぼそっ) ろくなことが起きない読み書きを同一ファイルでのじっそうをしようとしてるんじゃね?
jimbe

2019/04/06 04:51

その辺りは次の経験段階ということで良いのではないでしょうか.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問