파일시스템 및 파일업로드

Organ·2024년 1월 26일
0

JAVA

목록 보기
12/14
■■■  파일시스템 및 파일업로드 ■■■

○ java.io.FileInputStream 클래스(바이트 기반 스트림)

  자바에서는 파일에 대한 바이트 단위 입출력을 수행할 수 있도록 하기 위해
  FileInputStream 클래스와 FilseOutputStream 클래스를 제공하고 있다.

  ※ FileInputStream 클래스
     : 시스템의 일로부터 데이터를 바이트스트림으로 읽어들이기 위해 사용
  ※ FileInputSteam 클래스를 이용하여 데이터를 읽어들일 때에는
     데이터 소스인 파일과 직접 연결하여 사용한다.
     (이 때, 지정한 파일이 존재하지 않을 경우 IOException 발생)
  ※ FileInputStream 클래스는 InputStream 클래스의 하위 클래스이므로
     InputStream 클래스의 기본적인 메소드를 상속받거나 재정의하여 사용한다.
     (InputStream 클래스는 바이트 단위 입출력 기능의 최상위 클래스이며 추상 클래스이다.)

  - 생성자
    - FileInputStream(File file)
      : 주어진 File 객체가 가리키는 파일을 바이트스트림으로 읽기 위한
        FileInputStream 객체를 생성한다.
    - FileInputStream(FileDescriptor fdObj)
      : 주어진 FileDescriptor 객체가 가리키는 파일을 바이트스트림으로 읽기 위한
        FileInputStream 객체를 생성한다.
    - FileInputStream(String name)
      : 주어진 이름이 가리키는 파일을 바이트스트림으로 읽기 위한
        FileInputStream 객체를 생성한다.

○ java.io.FileOutputStream 클래스

  FileOutputStream 클래스는 
  데이터를 파일에 바이트스트림으로 저장하기 위해 사용한다.
  파일명이나 File 클래스의 객체를 인수로 넘겨줌으로써
  시스템에 파일을 직접 생성할 수 있다.
  기본적으로(default) 파일이 이미 존재한다면 덮어쓰기로 처리되기 때문에
  기존의 내용은 사라지게 된다.

  ※ FileOutputStream 클래스는 OutputStream 클래스의 하위 클래스이므로
     OutputStream 클래스의 기본적인 메소드를 상속받거나 재정의하여 사용할 수 있다.

  - 생성자
    - FileOutputStream(File file)
      : 주어진 File 객체가 가리키는 파일을 바이트스트림으로 쓰기 위한
        FileOutputStream 객체를 생성한다.
        기존의 파일이 존재할 경우 기본적으로(default) 그 내용을 지우고
        새로운 파일을 생성하게 된다. (엎어쓰기)
    - FileOutputStream(FileDescriptor fdObj)
      : 주어진 FileDescriptor 객체가 가리키는 파일을 바이트스트림으로 쓰기 위한
        FileOutputStream 객체를 생성한다.
        기존의 파일이 존재할 경우 기본적으로(default) 그 내용을 지우고
        새로운 파일을 생성하게 된다. (엎어쓰기)
    - FileOutputStream(String name)
      : 주어진 이름이 가리키는 파일을 바이트스트림으로 쓰기 위한
        FileOutputStream 객체를 생성한다.
        기존의 파일이 존재할 경우 기본적으로(default) 그 내용을 지우고
        새로운 파일을 생성하게 된다. (엎어쓰기)
    - FileOutputStream(String name, boolean append)
      : 주어진 이름이 가리키는 파일을 바이트스트림으로 쓰기 위한
        FileOutputStream 객체를 생성한다.
        기존의 파일이 존재할 경우 append 로 설정된 값에 따라(true / false)
        그 내용을 지우고 새로운 파일을 생성하거나(false) 기존의 내용에 추가한다.(true)


○ java.io.FileReader 클래스는 (문자 기반 스트림)
  
  FileReader 클래스는
  파일에 저장된 바이트를 유니코드 문자로 변환하여 읽어들이고,
  파일 쓰기 클래스인 FileWriter 클래스는
  출력할 유니코드 문자열을 시스템에 맞는 디폴트 문자 인코딩 방식으로 변환하여
  파일에 저장하는 역할을 수행한다.

  FileReader 클래스는
  파일에 저장된 문자열을 읽어들이는데 사용되며,
  이 클래스는 InputStreamReader 클래스를 상속한 것으로
  바이트 스트림을 읽어서 그 바이트를 유니코드로 나타내는 정수타입의 값으로 
  변환해준다.

  FileReader 클래스 역시 데이터를 읽어들일 소스인 파일과 직접 연결하여 사용하며,
  지정한 파일이 존재하지 않을 경우 FileNotFoundException 을 발생시키게 된다.

  - 생성자
    - FileReader(File file)
      : 주어진 File 객체를 이용하여 FileReader 객체를 생성한다.
    - FileReader(FileDescriptor fd)
      : 주어진 FileDescriptor 객체를 이용하여 FileReader 객체를 생성한다.
    - FileReader(String fileName)
      : 주어진 이름의 파일을 열어 FileReader 객체를 생성한다.

○ java.io.FileWriter 클래스 (문자 기반 스트림)

  FileWriter 클래스는
  파일 문자 출력스트림으로 출력할 문자를 디폴트 문자 인코딩 바이트로 변환하여
  파일에 저장하고자 할 때 사용한다.
  이 클래스는 OutputStreamWriter 클래스의 서브 클래스로
  유니코드를 바이트로 변환하는 기능을 담당하게 된다.
  FileOutputStream 클래스와 마찬가지로
  파일명이나 File 클래스의 객체를 인수로 넘겨줌으로써
  시스템에 파일을 직접 생성하게 된다.
  기본적으로(default) 해당 파일이 이미 존재할 경우 덮어쓰기 하게 된다.

  - 생성자
    - FileWriter(File file)
      : 주어진 File 객체를 이용하여 FileWriter 객체를 생성한다.
    - FileWriter(FileDescriptor fd)
      : 주어진 FileDescriptor 객체를 이용하여 FileWriter 객체를 생성한다.
    - FileWriter(String fileName)
      : 주어진 이름의 파일을 열어 FileWriter 객체를 생성한다.
    - FileWriter(String fileName, boolean append)
      : 주어진 파일을 append 값에 따라 (true / false)
        읽기 / 추가 모드로 열어 FileWriter 객체를 생성한다.


※ 파일과 디렉터리 관련(관리) 클래스 -> java.io.File 클래스

   File 클래스는 파일 및 디렉터리를 관리할 수 있도록 기능을 제공해주는 클래스로
   파일의 복사 또는 이름 변경 등의 조작을 할 경우 사용될 뿐
   파일의 내용을 입출력하기 위한 메소드를 제공해 주지는 않는다.
   자바에서는 모든 데이터의 입출력을 스.트.림 에 기반하여 수행하기 때문에
   File 클래스는 내부적으로 이러한 메소드를 구현할 필요가 없는 것이다.
   단, File 클래스의 인스턴스는 변경 불가능하다.
   즉, 한 번 생성되면 File 객체에 의해 표현되는 추상 경로명은 절대 변하지 않는다.

※ 파일 업로드
   
   웹 브라우저를 통해 파일을 전송하기 위해 폼을 구성할 경우
   - form 태그 안에 input 택의 type 속성의 속성값이
     file 인 태그를 통해 파일을 선택할 수 있는 대화창을 제공한다.
   - 이 때 , method 속성은 post 를 사용해야 하며,
     enctype 속성의 속성값은 "multipart.form-data" 로 지정해야 한다.
   - 단, "multipart.form-data" 로 지정한 폼을 전송할 경우
     request 객체로 얻어낸 파라미터 이름으로 값을 얻어낼 수 없다.
     이 말은 <input type="file"> 로 지정된 파일을 
     서버 상의 특정 경로에 업로드 하기 위해서 특별한 컴포넌트 가 
     필요하다는 의미이다.
     
※ 특별한 컴포넌트 : cos.jar
   
   - 다운로드 URL  -> http://www.servlets.com/cos
   - 다운로드 파일 -> cos-22.05.zip

0개의 댓글