JWJ_Hub 2023. 4. 6. 19:58
package file;

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

public class Ex03 {
	public static void main(String[] args) throws IOException, InterruptedException {
		
		// 파일 객체의 내용을 읽기전에 텍스트 기반의 데이터인지, 바이너리 데이터인지 구분해야 한다
		// 텍스트 기반 내용을 입출력하는 객체는 Reader, Writer 가 클래스이름에 붙어 있다
		
		File f = new File("C:\\windows\\system32\\drivers\\etc\\hosts");
		
		if(f.exists() == false) {
			f.createNewFile();
		}
		FileReader fileReader = new FileReader(f);
		BufferedReader br = new BufferedReader(fileReader, 1024);
		String line;
		
		while((line = br.readLine()) != null) {	// hasNextLine()
			System.out.println(line);
		}
		System.out.println("읽기 끝");
		br.close();
		fileReader.close();
		
		// 쓰기
		File f2 = new File("a.txt");
		
		if(f2.exists() == false) {
			f2.createNewFile();
		}
		
		// FileWriter(File dest, boolean append)
		// 지정한 dest 파일에 내용을 기록한다. 
		// append가 true이면 기존 내용을 유지하고 추가한다. false이면 덮어쓴다
		
		FileWriter fw = new FileWriter(f2, false);
		BufferedWriter bw = new BufferedWriter(fw, 1024);
		bw.write("Hello\n");
		bw.write("안녕하세요\n");
		bw.flush();
		bw.close();
		
		// Process 를 이용하여 메모장으로 대상 파일을 열어보기
		Process notepad = Runtime.getRuntime().exec("notepad " + f2.getAbsolutePath());
		Thread.sleep(3000);
		notepad.destroy();
		
		// f2.getAbsolutePath() 는 파일의 절대경로를 문자열로 반환한다
		// 절대경로 : 전체주소
		// 상대경로 : 현재위치 기준 주소
		
		System.out.println(f2.getName());
		System.out.println(f2.getPath());
		System.out.println(f2.getAbsolutePath());
		
	}
}