본문 바로가기

JAVA/JAVA Programming

[JAVA] 자바 입 · 출력

반응형
16.1 File 클래스
 -. File 클래스는 이름 그대로 파일을 관리할 수 있는 클래스이다.
 -. 파일에 대한 입력과 출력을 처리하기 위해서는 먼저 로컬(Local)지역의 파일과 연결하여 기본 작업을 수행하는 법을 익혀야 한다.
    (그 방법을 제공하는 클래스가 File 클래스 이다.)



■ File 클래스
 ① Fields(Field : 내용)
   -. static String pathSeparator : 경로에 대한 구분자, ':' ← window
   -. static char pathSeparatorChar : 경로에 대한 구분자 char형
   -. static String separator : 파일 경로에 대한 구분자, '\'
   -. static char separatorChar : 파일 경로에 대한 구분자 char형

 ② Constructs(Construct : 내용)
   -. File(File parent, String child) : 상위 폴더 parent를 경로로 하는 파일명 child와 연결하는 생성자
   -. File(String pathname) : pathname을 전체 경로로 하는 파일에 대한 연결 생성자
   -. File(String parent, String child) : 상위 폴더 parent를 경로로 하는 파일명 child와 연결하는 생성자
   -. File(URL url) : url의 파일과 연결하는 생성자

 ③ Methods(Return_type_Method : 내용)
  -. boolean canRead() : 파일을 읽을 수 있는지 확인
  -. boolean canWrite() : 파일에 데이터를 쓸 수 있는지 확인
  -. boolean createNewFile() : 새로운 파일을 생성
  -. static File createTempFile(String prefix, String suffix) : temp 파일을 prefix 접두어와 suffix 접미어를 붙여 생성
  -. static File createTempFile(String prefix, String suffix, File Directory) : temp 파일을 pxefix 접두어와 suffix 접미어를 붙여 디렉토리 경로에 생성
  -. boolean delete() : 파일을 즉시 삭제
  -. void deleteOnExit() : 프로그램 종료시 파일 삭제
  -. boolean exists() : 파일의 존재 유무를 확인
  -. File getAbsoluteFile() : 파일의 절대 경로를 File 객체로 얻어옴
  -. String getAbsolutePath() : 파일의 상대 경로에 대한 경로
  -. String getName() : 파일 이름
  -. File getParentFile() : 파일의 상위 폴더까지의 경로 File 객체
  -. String getPath() : 현재 파일의 경로
  -. boolean isAbsolute() : 절대 경로인지를 확인
  -. boolean isDirectory() : 디렉토리인지 확인
  -. boolean isFile() : 파일인지 확인
  -. boolean isHidden() : 숨긴 파일인지 확인
  -. long length() : 최종 수정 시간 획득
  -. String[] list() : 해당 파일이 폴더일 경우 그 속의 모든 파일이나 폴더의 리스트 문자열 배열로 획득
  -. String[] list(FilenameFilter filter) : 해당 파일이 폴더일 경우 그 속의 내용들 중 filter 객체의 구현한 내용을 필터링
  -. File[] listFiles(FileFilter filter) : 해당 파일이 폴더일 경우 그 속의 내용을 파일 배열로 얻어 오는데 filter 객체에 구현한 내용을 필터링
  -. static File[] listROOTS() : 현재 시스템의 루트 경로를 File 객체 배열로 획득(C:\, D:\ 등)
  -. boolean mkdir() : 폴더를 생성
  -. boolean mkdirs() : 파일 이름을 dest로 변경
  -. boolean setLastModified(long, time) : 최종 수정 시간 수정
  -. boolean setReadOnly() : 읽기 전용 파일로 만듦
  -. URL toURI() : 파일의 URI 경로를 획득
  -. URL toURL : 파일의 URL 경로를 획득

16.2 1byte 입 · 출력
 -. 자바에서 처리하는 입력과 출력은 스트림(Stream)에 의존한다.
 - .모든 형태의 입력과 출력은 1byte의 흐름으로 이루어져 있다.
 - .텍스트기반으로 한 형태로 바꾸어 주거나 아니면 객체를 기반으로 한 형태를 바꾸어 주는 클래스가 있다.
 -. 1byte의 입력과 출력 기본 클래스는 InputStream과 OutputStream이다.




■ 1byte 입력
 ① 콘솔 입력용
   -. FileInputStream fis = new FileInputStream(FileDescriptor.in);
   -. BufferedInputStream bis = new BfferedInputStream(fis);
   -. DataInputStream dis = new DataInputStream(bis);
   -. dis.read...

 ② 파일 입력용
   -. File file = new File("파일명");
   -. FileInputStream fis = new FileInputStream(file);
   -. BufferedInputStream bis = new BufferedInputStream(fis);
   -. DataInputStream dis = new DataInputStream(bis);
   -. dis.read...

 ③ 네트워크 입력용
   -. Socket soc = new Socket(…);
   -. BufferedInputStream bis = new BufferedInputStream(soc.getInputStream());
   -. DataInputStream dis = new DataInputStream(bis);
   -. dis.read...

■ 1byte 출력
 ① 콘솔 출력용
   -. FileOutputStrema fos = new FileOutputStream(FileDescriptor.out);
   -. BufferedOutputStream bos = new BufferedOutputStream(fos);
   -. DataOutputStream dos = new DataOutputStream(bos);
   -. dos.write...

 ② 파일 출력용
   -. File fie = new File("파일명");
   -. FileOutputStream fos = new FileOutputStream(file);
   -. BufferedOutputStream bis = new BufferedOutputtStream(fos);
   -. DataOutputStream dis = new DataOutputStream(bis);
   -. dos.write...

 ③ 네트워크 출력용
   -. Socket soc = new Socket(…);
   -. BufferedOutputStream bis = new BufferedOutputStream(soc.getOutputStream());
   -. DataOutputStream dos = new DataOutputStream(bos);
   -. dos.write...

16.3 텍스트 입 · 출력
   -. 텍스트 입력과 출력은 스트림을 변형시켜 주는 클래스를 사용한다.
   -. 텍스트 스트림은 2byte의 문자 체계를 가진(예를 들어 한글)형태의 입력과 출력에 사용된다.
   -. 기본 클래스로는 Writer와 Reader가 사용된다.


■ 2byte 입력
 ① 키보드 입력용
   -. InputStreamReader isr = new InputStreamReader(System.in);
   -. BufferedReader br = new BufferedReader(isr);
   -. br.readLine();

 ② 파일 출력용
   -. File fie = new File("파일명");
   -. FileReader fr = new FileReader(file);
   -. BufferedReader br = new BufferedReader(fr);
   -. PrintWriter pw = new PrintWriter(bw);
   -. br.readLine();

 ③ 네트워크 입력용
   -. Socket soc = new Socket(…);
   -. InputStreamReader isr = new InputStreamReader(soc.getInputStream());
   -. BufferedReader br = new BufferedReader(isr);
   -. br.readLine();

■ 2byte 출력
 ① 콘솔 출력용
   -. OutputStreamWriter osw = new OutputStreamWriter(System.out);
   -. BufferedWriter bw = new BufferedWriter(osw);
   -. PrintWriter pw = new PrintWriter(bw);
   -. pw.println(…);

 ② 파일 출력용
   -. File fie = new File("파일명");
   -. FileWriter fw = new FileWriter(file);
   -. BufferedWriter bw = new BufferedWriter(fw);
   -. PrintWriter pw = new PrintWriter(bw);
   -. pw.println(…);

 ③ 네트워크 출력용
   -. Socket soc = new Socket(…);
   -. OutputStreamWriter osw = new OutputStreamWriter(soc.getOutputStream());
   -. BufferedWriter bw = BufferedWriter(osw);
   -. printWriter pw = new PrintWriter(bw);
    -. pw.println(…);

※ 리다이렉션(Redirection)
 -. 원래 입 · 출력의 대상이 되는 곳의 방향(Direction)을 원하는 곳으로 입 · 출력 변경하는 작업을 리다이렉션(Redirection)이라고 한다.
 (예) System.out이라는 것은 콘솔로 출력되도록 기본 설정이 되어 있다. 그러나 이것이 출력 방향을 파일로 변경하면 앞으로의
       System.out은 파일을 대상으로 하는 출력이 된다.

16.4 객체  입 · 출력
 -. 객체단위의 입 · 출력도 마찬가지로 스트림을 기반으로 한다.
    (클래스 상속관계는 1byte 계열, 객체의 입력이나 출력은 콘솔과 키보드를 통해서 이루어지지 않는다.)
 -. 객체의 입 · 출력에서는 직렬화라는 개념이 반드시 필요하다.
 -. 직렬화라는 거은 클래스의 구성을 파일이나 네트워크로 정상적으로 전달하기 위해 형태를 재구성하는 것이다.
    (다시 말해 일려로 줄으 지어서 전송하여야 한다.)
 -. java.io.Serializable이라는 인터페이스를 제공하므로 전송하고자 하는 객체에 대해 Serializable를 구현해 주기만 하면 되는데,
    이 인터페이스 내부에서는 아무런 메서드도 있지 않다. 그래서 재정의 할 메서드도 없다.
    (클래스의 선언부에서 「implements Serializable」이라고만 적어 주면 된다.)

■ 객체 입력
 ① 파일 입력용
  -. File file = new File("파일명");
  -. FileInputStream fis = new FileInputStream(file);
  -. BufferedInputStream bos = new BufferedInputStream(fis);
  -. ObjectInputStream ois = new ObjectInputStream(bis);
  -. try {

objec obj = ois.readObject();
      }
      catch(ClassNotFoundException ee) {  }

 ② 네트워크 출력용
  -. Socket soc = new Socket(…);
  -. BujfferedInputStream bos = new BufferedInputStream(soc.getInputStream());
  -. ObjectInputStream ois = new ObjectInputStream(bis);
  -. try {

objec obj = ois.readObject();
      }
      catch(ClassNotFoundException ee) {  }

■ 객체 출력
 ① 파일 출력용
  -. File file = new File("파일명");
  -. FileOutputStream fos = new FileOutputStream(file);
  -. BufferedOutputStream bos = new BufferedOutputStream(fos);
  -. ObjectOutputStream oos = new ObjectOutputStream(bos);
  -. oos.writeObject(…);

 ② 네트워크 출력용
  -. Socket soc = new Socket(…);
  -. BujfferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
  -. ObjectOutputStream oos = new ObjectOutputStream(bos);
  -. oos.writeObject(…);
반응형