kojisiの技術ノート

開発系SEに転職した未熟者の勉強記録

ファイル取り込み・編集・出力処理

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class sourceEdit {
    public static void main(String args[]){
        try{
            File file = new File("");
            String dire="";
            //引数で読み込むファイルっをフルパスで指定する
            if(args.length == 0 || args[0]==null){
                System.out.print("引数が不正です");
                System.exit(0);
            }else{
                dire=args[0];
            }
            file = new File(dire);
            //ファイルの存在チェック
            if (checkBeforeReadfile(file)){
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"Shift-JIS"));
                //ファイルの出力先
                File rwfile = new File("D:\0_work\html\burogu.txt");
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(rwfile),"UTF-8"));
                String str;
                //半角スペースの置き換え
                String hanspace = " ";
                //文末に改行の追加
                String kaigyo =" ";
                while((str=br.readLine()) != null){
                    //編集後文字列格納用変数
                    String result = null;
                    Pattern p = Pattern.compile(hanspace);
                    Matcher m = p.matcher(str);
                    if(m.find()){
                        //半角スペースの置き換え処理
                        result = m.replaceAll(" ");
                    }else{
                        //何もない時は末尾に改行だけつける
                        result = str;
                    }

                    bw.write(result+kaigyo);
                    bw.newLine();
                }
                br.close();
                bw.close();
                System.out.print("編集処理が正常に完了しました。\n");
                System.out.print("ファイルの出力先はD:\0_work\dekitakotonote\test.txtです");
            }else{
                System.out.println("ファイルが見つからないか開けません");
            }
        }catch(FileNotFoundException e){
            System.out.println(e);
        }catch(IOException e){
            System.out.println(e);
        }
    }

    private static boolean checkBeforeReadfile(File file){
        if (file.exists()){
            if (file.isFile() && file.canRead()){
                return true;
              }
            }

        return false;
    }
}