[Java] 자막 파일에서 대사만 출력하기

File I/O 공부할 겸 만들어 본 자막 파일에서 일본어 대사만 출력하는 프로그램. 프로그램이라고 하기에도 좀 그렇긴 한데,, 코드짜는 동안 그래도 자바에서 파일 읽고 쓰고 하는 건 어느정도 배운 것 같다. 매우 부끄럽지만 그래도 벨로그에 기록해본다😚

사진 일부로 블러처리했다. 개인 만족용이라서,,!

👇 대충 이렇게 생긴 자막 파일을 가지고 있었다. 저기서 일본어 대사 하나하나 복사하는 게 너무 귀찮아서,,,

👇 이렇게 뽑아낼 수 있도록 했다.


정규식을 써보고 싶었는데, 제대로 공부한 적이 없어서 다른 방법을 찾아봤다. 유니코드로도 할 수 있는 방법이 있길래 한 번 적용해봤다. 이 분 블로그에 자세히 적혀있어서 살았다 😄

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.FileWriter;

public class fileReader {
    public static void main(String[] args){


        try{
            File fileRead = new File("경로작성/읽어올 파일 이름");
            File fileWrite = new File("경로작성/새로 만들 파일 이름";);
            
            FileReader fr = new FileReader(fileRead);
            FileWriter fw = new FileWriter(fileWrite);

            BufferedReader br = new BufferedReader(fr);
            BufferedWriter bw = new BufferedWriter(fw);

            String line = "";
            while((line= br.readLine())!=null){
                for(int i=0;i<line.length();i++){
                    if(line.charAt(i) >= '\u3040'&& line.charAt(i) <= '\u309F'){
                        System.out.print(line.charAt(i));
                        bw.write(line.charAt(i));
                        bw.flush();
                    } else if(line.charAt(i) >= '\u30A0'&& line.charAt(i) <= '\u30FF'){
                        System.out.print(line.charAt(i));
                        bw.write(line.charAt(i));
                        bw.flush();
                    } else if(line.charAt(i) >= '\u4E00'&& line.charAt(i) <= '\u9FFF'){
                        System.out.print(line.charAt(i));
                        bw.write(line.charAt(i));
                        bw.flush();
                    } else if(line.charAt(i)>='。'){
                        System.out.print(line.charAt(i));
                        bw.write(line.charAt(i));
                        bw.flush();
                    }
                }
                bw.newLine();

            }
            fr.close();
            fw.close();

        }catch(FileNotFoundException e){

        }catch(IOException e){
            System.out.println(e);
        }
    }
    
}

분명히 더 좋은 방법이 있을테니 더 생각해봐야겠다.

좋은 웹페이지 즐겨찾기