자바 PrintStream VS FileWriter
package api.io;
import java.io.PrintStream;
/*
* output을 담당하는 스트림클래스는 파일이 존재하지 않으면 파일을만들어서 작업하는 아주 똑똑한 친구들 입니다
* PrintStream은 jvm의 기본 문자셋에 맞춰서 문자열을 바이트 단위로 변환해서 사용하게 해주낟
* 그래서 프린트 스트림은 내부적으로 utf-16을 사용하므로 한글반환이 가능하다
* 여기서 utf-16이란 무엇인가? 암호학 가라
*
* 바이트 char= 미터 센치미터 피트 단위로 생각해라
*
*/
public class PrintStreamTest {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
//프린트 스트림은 유니코드방식이 내부적으로 적용이 돼어져있어서
//한글이 안꺠진다
//님아
//자바 인터프리터가 메인메소드 호출하는걸 제가 어케 알아요
//제대로 설명해줘야 알지요
PrintStream ps= new PrintStream("src/data/p_out.txt");
//위는 줄이 뜬다
//근데 연습중에는 에러신경안쓰고프니 메인으로 넘길거다 하면 throws보내
String str="wkqk";
String str2="gogo";
//파이썬 c포멧풀력이 자바에도 있네
ps.printf("%s,%s %n",str,str2);
ps.println("c");
ps.close();
}
}
package api.io;
import java.io.FileWriter;
public class FileWriterTest {
//축구심판이 처리하기 귀찮아서 var로 보낼거임 throws
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
//출력할 파일과 연결(파일열기)
//=>파일이 존재하지 않으면 파일을 생성해서 사용한다
//여기서 질문 생성가능한 파일의 종류는?
FileWriter fw = new FileWriter("src/data/result.txt");
//파일엑세스
fw.write(97);
fw.write("안녕");
//터널 폐쇄후 사람 퇴근시키기
fw.close();
}
}
FileWriter사용시 주의점
FileWriter는 버퍼가 다 차지않으면 파일이 쓰여지지 않는다
close메소드(법)은 버퍼가 다 차지않아도 버퍼의 내용을 쓰는데(버퍼를 비운다)
flush메소드는 파일이 가진 버퍼에 뭐가 있으면 비우겠다는거다
close안에 flush메소드가 있어서 문제가 없는데
사람인지라 close를 안하게 돼는 실수가 발생한다!
그래서 이 flush라는 개념을 알아보자
댓글
댓글 쓰기