๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/Spring

(106)[Spring]17์ผ์ฐจ: โ–  05 ํŒŒ์ผ์‹œ์Šคํ…œ ๋ฐ ํŒŒ์ผ์—…๋กœ๋“œ โ– , F_FileSystemApp01~05

by ์ข…์ด๋นจ๋Œ€ 2024. 1. 26.
TOP

๋ชฉ์ฐจ

    1. 2024.1.26(๊ธˆ)

     

     

    โ– โ– โ–  05 ํŒŒ์ผ์‹œ์Šคํ…œ ๋ฐ ํŒŒ์ผ์—…๋กœ๋“œ โ– โ– โ– 

     

    โ—‹ java.io.FileInputStream ํด๋ž˜์Šค

     

      ์ž๋ฐ”์—์„œ๋Š” ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด

      `FileInputStream` ํด๋ž˜์Šค์™€ `FileOutputStream` ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

    /* **inputSteam , OutputStream -> ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ๊ฒƒ์„ ๋จผ์ € ์ƒ๊ฐํ•˜๊ธฐ** */

     


      โ€ป FileInputStream ํด๋ž˜์Šค

        : ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ฝ์–ด๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

      โ€ป FileInputStream ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“ค์ผ ๋•Œ์—๋Š”

         ๋ฐ์ดํ„ฐ ์†Œ์Šค์ธ ํŒŒ์ผ๊ณผ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

         (์ด ๋•Œ, ์ง€์ •ํ•œ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ 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)

        : ์ฃผ์–ด์ง„ FileDescriptor ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์„ ๋ฐ”์ดํŠธ์ŠคํŠธ๋ฆผ์œผ๋กœ ์“ฐ๊ธฐ ์œ„ํ•œ

          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)

          : ์ฃผ์–ด์ง„ 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-part"ใ€๋กœ ์ง€์ •ํ•œ ํผ์„ ์ „์†กํ•  ๊ฒฝ์šฐ

         request ๊ฐ์ฒด๋กœ ์–ป์–ด๋‚ธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์œผ๋กœ ๊ฐ’์„ ์–ป์–ด๋‚ผ ์ˆ˜ ์—†๋‹ค.

         ์ด ๋ง์€ ใ€Ž<input type="file">ใ€๋กœ ์ง€์ •๋œ ํŒŒ์ผ์„

         ์„œ๋ฒ„ ์ƒ์˜ ํŠน์ • ๊ฒฝ๋กœ์— ์—…๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ใ€ŽํŠน๋ณ„ํ•œ ์ปดํฌ๋„ŒํŠธใ€๊ฐ€

         ํ•„์š”ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

     

    โ€ป ํŠน๋ณ„ํ•œ ์ปดํฌ๋„ŒํŠธ: ใ€Žcos.jarใ€

     

       - ๋‹ค์šด๋กœ๋“œ URL → http://www.servlets.com/cos

       - ๋‹ค์šด๋กœ๋“œ ํŒŒ์ผ → cos-22.05.zip


    15_cos.jar ํด๋” ๋งŒ๋“ค๊ธฐ
    cos-22.05.zip ๋‹ค์šด๋กœ๋“œ
    ์••์ถ•ํ•ด์ œํ•œ lib ์•ˆ์˜ cos.jar ๋ณต์‚ฌํ•ด์„œ ํด๋”์œ„์น˜ ์ด๋™

     


    F_FileStystemApp01: ๊ด€์ฐฐ ๋ฐ ํ”„๋ฆฐํŠธ

    ใ„ด/FileSystemApp01/WebContent

    ใ„ดใ„ดAppRoot.jsp

    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	String appRoot = "/";
    	appRoot = pageContext.getServletContext().getRealPath(appRoot);
    	
    	
    	File newFile = new File(appRoot, "data/test.txt");
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>AppRoot.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>๊ด€์ฐฐ</h1>
    	<hr>
    </div>
    
    <div>
    	<h2>์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฃจํŠธ: <%=appRoot %></h2>
    	<!-- C:\SpringMVCStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FileSystemApp01\ -->
    	
    	<h2>์ƒ์„ฑํ•  ํŒŒ์ผ ์œ„์น˜: <%=newFile %></h2>
    	<!-- C:\SpringMVCStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FileSystemApp01\data\test.txt -->
    </div>
    
    
    </body>
    </html>

     

    F_FileSystemApp02: FileWriter์™€ FileRead๋กœ ํ…Œ์ŠคํŠธ

    FileWrite.jsp ์‹คํ–‰ ํ›„, ํด๋”์— ์ƒ์„ฑ๋œ ๋‚ด์šฉ ํ™•์ธ(์„œ๋ฒ„์ชฝ ์ž์›)
    FileRead.jsp

    ใ„ด/FileSystemApp02/WebContent

    ใ„ดใ„ดFileRead.jsp

    <%@page import="java.io.BufferedReader"%>
    <%@page import="java.io.FileReader"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	/* FileRead.jsp */
    
    	String appRoot = "/";
    	appRoot = pageContext.getServletContext().getRealPath(appRoot);
    	
    	// 1. ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๊ธฐ ์œ„ํ•ด File ๊ฐ์ฒด ์ƒ์„ฑ
    	File newFile = new File(appRoot, "data/test.txt");
    	
    	// 2. ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€ ํ™•์ธ
    	//	  → ์ง€์ •๋œ ๊ฒฝ๋กœ์— ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ
    	//		 ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ฒ˜๋ฆฌํ•˜์—ฌ FileNotFoundException ๋ฐฉ์ง€
    	if(newFile.exists())
    	{
    		// 3-1. ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•œ FileReader ๊ฐ์ฒด ์ƒ์„ฑ
    		FileReader fr = new FileReader(newFile);
    		
    		// 3-2. FileReader ๊ฐ์ฒด๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด
    		//		BufferedReader ๋กœ ๊ฐ์‹ธ๊ธฐ
    		BufferedReader br = new BufferedReader(fr);
    		
    		// 4. ์‹ค์งˆ์ ์œผ๋กœ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์–ด๋ƒ„
    		String readData;
    		while( (readData=br.readLine()) != null )	// ๋ผ์ธ๋ณ„๋กœ ์ฝ์–ด๋“ค์ด๋Š” ๊ธฐ๋Šฅ ๋ฐ˜๋ณต
    		{
    			out.println(readData + "<br>");
    		}
    		
    		// 5-1. BufferedReader ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ(๋‹ซ์•„์คŒ)
    		br.close();
    		
    		// 5-2. FileReader ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ(๋‹ซ์•„์คŒ)
    		fr.close();
    	}
    	else	// ์ง€์ •๋œ ๊ฒฝ๋กœ์— ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ
    	{
    		out.println("์ •์ƒ์ ์œผ๋กœ ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>FileRead.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    </body>
    </html>

    ใ„ดใ„ดFileWrite.jsp

    <%@page import="java.io.FileWriter"%>
    <%@page import="java.io.PrintWriter"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	/* FileWrite.jsp */
    	
    	String appRoot = "/";
    	appRoot = pageContext.getServletContext().getRealPath(appRoot);
    	
    	// 1. ํŒŒ์ผ์„ ์“ฐ๊ธฐ ์œ„ํ•ด file ๊ฐ์ฒด ์ƒ์„ฑ
    	File newFile = new File(appRoot, "data/test.text");
    	
    	// 2. ํŒŒ์ผ์ด ์กด์žฌํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด...
    	if( !newFile.getParentFile().exists() )
    	{
    		// ํŒŒ์ผ์ด ์œ„์น˜ํ•  ๊ณณ๊นŒ์ง€์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑ
    		newFile.getParentFile().mkdirs();
    	}
    	
    	// 3-1. ํŒŒ์ผ์„ ์“ฐ๊ธฐ ์œ„ํ•œ FileWriter ๊ฐ์ฒด ์ƒ์„ฑ
    	//	  → ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜์—ฌ ํŒŒ์ผ์— ๋‚ด์šฉ์„ ๊ธฐ๋ก
    	FileWriter fw = new FileWriter(newFile);	//* **newFile ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ใ„ดใ…** *
    	
    	// 3-2. FileWriter ๊ฐ์ฒด๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด PrintWriter ๋กœ ๊ฐ์‹ธ์คŒ
    	PrintWriter pw = new PrintWriter(fw);
    	
    	// 4. ์‹ค์งˆ์ ์œผ๋กœ ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์”€(๊ธฐ๋ก)
    	pw.println("ํ…Œ์ŠคํŠธ์ด๋‹ค...");
    	pw.println("ํ™•์ธํ•ด๋ณด์ž...");
    	
    	// 5-1. PrintWriter ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ(๋‹ซ์•„์คŒ)
    	pw.close();
    	// 5-2. FileWriter ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ(๋‹ซ์•„์คŒ)
    	fw.close();
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>FileWrite.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    </body>
    </html>

    F_FileSystem03

     

    ใ„ด/FileSystemApp03/WebContent

    ใ„ดใ„ดObjectRead.jsp

    <%@page import="java.util.Enumeration"%>
    <%@page import="java.util.Hashtable"%>
    <%@page import="java.io.ObjectInputStream"%>
    <%@page import="java.io.FileInputStream"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	/* ObjectRead.jsp */
    	
    	String appRoot = "/";
    	appRoot = pageContext.getServletContext().getRealPath(appRoot);
    	
    	File newFile = new File(appRoot, "objData/data.ser");
    	
    	// ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ ํ›„ ์ฒ˜๋ฆฌ
    	if(newFile.exists())
    	{
    		// ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•œ FileInputStream ๊ฐ์ฒด ์ƒ์„ฑ
    		FileInputStream fis = new FileInputStream(newFile);
    		
    		// ํŒŒ์ผ์—์„œ Object๋ฅผ ์ฝ์–ด๋“ค์ด๊ธฐ ์œ„ํ•œ ObjectInputStream ๊ฐ์ฒด ์ƒ์„ฑ
    		ObjectInputStream ois = new ObjectInputStream(fis);
    		
    		//
    		Hashtable h = (Hashtable)ois.readObject();
    		
    		ois.close();
    		fis.close();
    		
    		Enumeration e = h.keys();
    		while(e.hasMoreElements())
    		{
    			String key = (String)e.nextElement();
    			String value = (String)h.get(key);
    			
    			%>
    			
    			<%=key %>์˜ ๊ฐ’์€ <%=value %> ์ž…๋‹ˆ๋‹ค.
    			
    			<%
    		}
    		
    	}else
    	{
    		out.println("์ •์ƒ์ ์œผ๋กœ ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>ObjectRead.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    </body>
    </html>

    ใ„ดใ„ดObjectWrite.jsp: cos.jar ์‚ฌ์šฉX

    <%@page import="java.io.ObjectOutputStream"%>
    <%@page import="java.io.FileOutputStream"%>
    <%@page import="java.util.Hashtable"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	/* ObjectWrite.jsp */
    	String appRoot = "/";
    	appRoot = pageContext.getServletContext().getRealPath(appRoot);
    	
    	// ํ…Œ์ŠคํŠธ
    	System.out.println(appRoot);
    	
    	// ํŒŒ์ผ ๊ฐ์ฒด ์ƒ์„ฑ
    	File newFile = new File(appRoot, "objData/data.ser");
    	//--- ๊ฐ์ฒด ์ง๋ ฌํ™˜
    	
    	// ํŒŒ์ผ์ด ์กด์žฌํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ๋Š”
    	// ํŒŒ์ผ์ด ์œ„์น˜ํ•  ๊ฒฝ๋กœ๊นŒ์ง€์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋“ค์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.
    	if( !newFile.getParentFile().exists() )
    	{
    		newFile.getParentFile().mkdir();
    	}
    	
    	// ํŒŒ์ผ์— ๋„ฃ๊ธฐ ์œ„ํ•œ Hashtable ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ์— ํฌํ•จ์‹œํ‚จ๋‹ค.
    	Hashtable<String, String> h = new Hashtable<String, String>();
    	
    	h.put("key1","์‚ฌ๊ณผ");
    	h.put("key2","์ˆ˜๋ฐ•");
    	
    	// ํŒŒ์ผ์„ ๋‚ด๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ ๊ตฌ์„ฑ
    	FileOutputStream fos = new FileOutputStream(newFile);
    	
    	// Object ๋ฅผ ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ObjectOutputStream ๊ฐ์ฒด ์ƒ์„ฑ
    	// → ์ƒ์„ฑํ•œ ๊ฐ์ฒด๋กœ FileOutputStream ๊ฐ์ฒด ๊ฐ์‹ธ๊ธฐ
    	ObjectOutputStream oos = new ObjectOutputStream(fos);
    	
    	// ObjectOutputStream ์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์— Object ๋ฅผ ๊ธฐ๋ก
    	oos.writeObject(h);
    	
    	// ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ
    	oos.close();
    	fos.close();
    	
    // ์•„๋ž˜ ๋ณด์—ฌ์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ์ œ๊ฑฐ
    	
    %>

    F_FileSystem04: ํด๋ผ์ด์–ธํŠธ์˜ ํŒŒ์ผ → ์„œ๋ฒ„ ๋กœ ๋„˜์–ด๊ฐ X

    ใ„ด/FileSystemApp04/WebContent

    ใ„ดใ„ดReceive.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	// ์ด์ „ ํŽ˜์ด์ง€(Send.jsp)๋กœ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    	// → name, upload
    	String name = request.getParameter("name");
    	String upload = request.getParameter("upload");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Receive.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<!-- ์ด๋ฆ„: ์–ด์ฉŒ๊ตฌ<br> -->
    	์ด๋ฆ„: <%=name %><br>
    	<!-- ํŒŒ์ผ: ์ €์ฉŒ๊ตฌ<br> -->
    	ํŒŒ์ผ: <%=upload %><br>
    </div>
    
    </body>
    </html>

    ใ„ดใ„ดSend.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Send.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ ํŒŒ์ผ ์—…๋กœ๋“œ</h1>
    	<hr />
    </div>
    
    <div>
    	<!-- ใ€Ženctype="multipart/form-data"ใ€: ํŒŒ์ผ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—…๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ -->
    	<!-- ใ€Žmethod="post"ใ€                : ํŒŒ์ผ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์—…๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ ๋ฐ ์ „์†ก ๋ฐฉ์‹ -->
    	<form action="Receive.jsp" method="post" enctype="multipart/form-data">
    		<!-- **ํ˜„์žฌ๋Š” ํ™•์ธ์„ ์œ„ํ•ด ๋ฐ”๋กœ ์ง„์ž…ํ•˜๊ฒŒ ํ•˜์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” controller๋ฅผ ์ด์šฉํ•  ๊ฒƒ** -->
    		์ด๋ฆ„: <input type="text" name="name"/><br>
    		
    		<!-- ํŒŒ์ผ ์—…๋กœ๋“œ ๋Œ€ํ™”์ฐฝ ๊ตฌ์„ฑ -->
    		ํŒŒ์ผ: <input type="file" name="upload"/><br>
    		
    		<!-- submit ์•ก์…˜์ฒ˜๋ฆฌ -->
    		<button type="submit" class="btn">์ „์†ก</button>
    	</form>
    </div>
    
    </body>
    </html>
    <!-- 
    	โ€ป ใ€ŽSend.jspใ€์˜ form ์—˜๋ฆฌ๋จผํŠธ enctype ์†์„ฑ์˜ ์†์„ฑ๊ฐ’์„
    	   ใ€Ženctype="multipart/form-data"ใ€์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•  ๊ฒฝ์šฐ
    	    form ์˜ ๋‚ด์šฉ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ’์˜ ํ˜•ํƒœ๋กœ ์ „์†กํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ ํ™œ์šฉ๋˜๋ฉฐ,
    	    ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ „์†กํ•  ๊ฒฝ์šฐ ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋Š”
    	    
    			์ด๋ฆ„: null
    			ํŒŒ์ผ: null
    		
    		๋กœ ํ™•์ธ๋œ๋‹ค.
    		
    		==> ์ด๋Š”, ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ฐ’์„ getParameter()๋ฅผ ํ†ตํ•ด ์ˆ˜์‹ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
     -->

    ใ„ดใ„ดReceive.jsp

     


    F_FileSystemApp05

    ใ„ด/FileSystemApp05/WebContent

    ใ„ดใ„ดReveive.jsp

    <%@page import="java.io.DataInputStream"%>
    <%@page import="java.util.Enumeration"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	/* Receive.jsp */
    	
    	String contentType = request.getContentType();
    	Enumeration e = request.getHeaderNames();
    
    	out.println("[[ ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ ๋‚ ์•„์˜ค๋Š” ํ—ค๋” ์ •๋ณด๋“ค ]]<br>");
    	
    	while(e.hasMoreElements())
    	{
    		String key = (String)e.nextElement();
    		String value = request.getHeader(key);
    		
    		out.println(key + " " + value + "<br>");
    	}
    	
    	out.println("[[ requst ๋กœ ๋„˜์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋“ค ]]");
    	
    	DataInputStream dis = new DataInputStream(request.getInputStream());
    	
    	String line = null;
    	while((line=dis.readLine()) != null)
    		//			--------- ๋ผ์ธ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ์–ด์˜ด
    	{
    		// ํ™•์ธ โ‘ 
    		//out.println(new String(line.getBytes("UTF-8"), "UTF-8")+"<br>");
    		
    		// ํ™•์ธ โ‘ก
    		// ๋ฐ”์ดํŠธ ๊ฐ’์„ ์–ด๋–ค ์ธ์ฝ”๋”ฉ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค ๊ฒƒ์ธ์ง€
    		out.println(new String(line.getBytes("ISO-8859-1"), "UTF-8")+"<br>");
    		//			----------- ๋ฌธ์ž์—ด ๊ฐ์ฒด ์ƒ์„ฑ                   -
    		// 									------------- ms949(default character set)
    		//						------------ ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ
    	}
    
    // ์•„๋ž˜ ๋ณด์—ฌ์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ๋ชจ๋‘ ์ œ๊ฑฐ
    %>

    ใ„ดใ„ดUploadForm.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>UploadForm.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>ํŒŒ์ผ ์ž…๋ ฅ ํผ</h1>
    	<hr />
    </div>
    
    <div>
    	<form action="Receive.jsp" method="post" enctype="multipart/form-data">
    		file: <input type="file" name="file" size="50"><br>
    		
    		text: <input type="text" name="data" size="50"/>
    	
    		<input type="submit" value="upload"/>
    	</form>
    </div>
    
    
    </body>
    </html>