広告
↓発売日:2018年09月22日↓
新品価格 |
それでは手始めにJava言語による置換部分を作っていきます。
今回は「String」クラスの置換メソッドを使って置換を行っていくのでまずはファイルの内容を「String」オブジェクトに置き換えます。
class FileToString{ static String fileToString(String file_name){ StringBuffer sb = new StringBuffer(); try{ FileReader fr = new FileReader(new File(file_name)); int ch; while((ch = fr.read()) != -1){ sb.append((char)ch); } fr.close(); } catch(FileNotFoundException e){ System.out.println(e); return "error"; } catch(IOException e){ System.out.println(e); return "error"; } return sb.toString(); } }
ファイルの内容を「String」オブジェクトに置き換える為のクラス「FileToString」です。
とりあえず「static」メソッドとして目的のメソッドを用意しました。
内容としてはひとまずファイルの内容を受け取る為の「StringBuffer」オブジェクトを用意して、
StringBuffer sb = new StringBuffer();
そこに「FileReader」クラスを使ってファイルの内容を一文字ずつ読み込むとともに「append」メソッドで先ほど用意した「StringBuffer」オブジェクトに一文字ずつ付け加えていきます。
try{ FileReader fr = new FileReader(new File(file_name)); int ch; while((ch = fr.read()) != -1){ sb.append((char)ch); } fr.close(); }
あとは例外処理を書いてファイルの内容を受け取りきった「StringBuffer」オブジェクトを「String」オブジェクトに置き換えて「return」して完了です。
catch(FileNotFoundException e){ System.out.println(e); return "error"; } catch(IOException e){ System.out.println(e); return "error"; } return sb.toString();
ファイル読み込みの処理などはほとんど一緒なので定型句として覚えてしまいましょう。
「ファイルの内容を「String」オブジェクトに置き換える為のクラス」が準備できたトコロでファイル名を受け取り置換処理に入っていきます。
class CodeToHTML{ public static void main(String args[]){ String str = FileToString.fileToString(args[0]); if(!(str.equals("error"))){ System.out.println("置換前の内容"); System.out.println(str); str = str.replaceAll("&","&"); str = str.replaceAll("<","<"); str = str.replaceAll(">",">"); str = str.replaceAll("\"","""); System.out.println("\n置換後の内容"); System.out.println(str); System.out.println("\n置換してよろしいですか?(y / n)"); String ans; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try{ ans = br.readLine(); if(ans.equals("y")){ FileWriter fw = new FileWriter(new File(args[0])); fw.write(str); fw.close(); System.out.println("置換完了しました!"); } else{ System.out.println("置換中止しました!"); } ans = br.readLine(); } catch(IOException e){ System.out.println(e); } } } }
クラス「CodeToHTML」になります。
「main」メソッドを設置して置換処理を行っていきます。
細かく見ていきましょう。
まずコマンドラインから受け取った置換するファイルの名前は「main」メソッド引数の「args[0]」に格納されているので
String str = FileToString.fileToString(args[0]);
さきほど用意した「FileToString」クラスを使ってファイルの内容を「String」オブジェクトに置き換えます。
置換前の内容を表示→置換→置換後の内容を表示します。
System.out.println("置換前の内容"); System.out.println(str); str = str.replaceAll("&","&"); str = str.replaceAll("<","<"); str = str.replaceAll(">",">"); str = str.replaceAll("\"","""); System.out.println("\n置換後の内容"); System.out.println(str); System.out.println("\n置換してよろしいですか?(y / n)");
ファイルの内容はもう「String」オブジェクトに入っているので「replaceAll()」メソッドを使って置換していきます。
置換前の内容、置換後の内容を確認したトコロで問題なければ置換します。
String ans; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ans = br.readLine();
標準入力の受取にはこちらを使います。
入力待ちになり「Enter」が押されるまでの入力部分を受け取る事ができるのでこれを使って確認の答えを受け取ります。
try{ ans = br.readLine(); if(ans.equals("y")){ FileWriter fw = new FileWriter(new File(args[0])); fw.write(str); fw.close(); System.out.println("置換完了しました!"); } else{ System.out.println("置換中止しました!"); } } catch(IOException e){ System.out.println(e); }
問題なければ「FileWriter」クラスを使って先ほどの「String」オブジェクトの内容をファイルに書き込んで完了です。
それでは次回は起動部分を作っていきましょう!
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |