[TIL] ํ์ผ ์ ์ถ๋ ฅ
๐๐ป ํ์ผ ์ ์ถ๋ ฅ
๐ InputStream, OutputStream : ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ
- ์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์ → ๋๋ฌธ์ ์ ์ถ๋ ฅ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฐ๊ฐ ์คํธ๋ฆผ ํ์
- ๋ฐ์ดํธ ๊ธฐ๋ฐ์ ์ ์ถ๋ ฅ ๋จ์๊ฐ 1byte
โช๏ธ FileInputStream : ํ์ผ ๋ด์ฉ ์ฝ๊ธฐ
- ํ์ผ๋ก๋ถํฐ ๋ด์ฉ์ ๋ฐ์ดํธ๋ก ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํธ ๋จ์๋ก ์ถ๋ ฅํ ์ ์๋ ํด๋์ค
- InputStream์ ์์๋ฐ์
- ์ถ๋ฐ ์ง์ ๊ณผ ๋์ฐฉ ์ง์ ์ ์ฐ๊ฒฐํ๋ ํต๋ก(์คํธ๋ฆผ) ์์ฑ
- ์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ์ง๋ง ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๋ฆผ → ๋ฒํผ ์ฌ์ฉํ๋ ๋ค๋ฅธ ํด๋์ค์ ๋ง์ด ์ฌ์ฉ
- ๋ฒํผ ? ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ์ฌ๋ฌ ๋ฐ์ดํธ๋ฅผ ์ ์ฅํ์ฌ ํ๋ฒ์ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถ๋ ฅ ํ ์ ์๋๋ก ๋์์ฃผ๋ ์์ ์ ์ฅ๊ณต๊ฐ
- BufferedInputStream์ด๋ผ๋ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ํฅ์
1๏ธโฃ try-catch ๊ตฌ๋ฌธ ์ฌ์ฉ
try { ~~ }
catch { ~~ }
catch(Exception e) {
System.out.print(e);
}
- ํ์ผ๋ช ์ String์ผ๋ก ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง ํ์ผ์ด ์กด์ฌํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์์ด Exception ์ฒ๋ฆฌ ํ์
2๏ธโฃ ์์ฑ์ File
FileInputStream fileInput = new FileInputStream("welcome.txt");
or
File f = new File("welcome.txt");
FileInputStream fileInput = new FileInputStream(f);
- ์์ฑ์์ ์ธ์๋ก ํ์ผ๋ช ์ ์ง์ String ํํ๋ก ์ฃผ๊ฑฐ๋ or File ๊ฐ์ฒด๋ก ์ค ์ ์์
- ํ์ผ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ํต๋ก๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ
3๏ธโฃ ํ์ผ์์ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ณ์ ์ ์ธ
int i = 0;
- ํ์ผ์์ ์ฝ์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ ์ ์ธํจ
- ํ๊ธ์์ฉ ์ฝ์ด์ค๊ธฐ ์ํด ํ๋ ์ ์ธ
4๏ธโฃ int read()์ while ๋ฌธ
int read() : 1byte์ฉ ๋ด์ฉ์ ์ฝ์ด ์ ์๋ก ๋ฐํ
int read(byte[] b) : ํ์ผ ๋ด์ฉ์ ํ ๋ฒ์ ๋ชจ๋ ์ฝ์ด์ ๋ฐฐ์ด์ ์ ์ฅ
- ๋ชจ๋ ํ์ฌ ํ์ผ ํฌ์ธํฐ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ํจ
while( (i=fileInput.read() != -1 ) {
System.out.print((char) i);
}
- ์ฝ์ด์ฌ ๊ฐ์ด ์๋ค๋ฉด -1์ ๋ฐํํ์ฌ while ๋ฌธ์ ๋๊ฐ
- 1byteํฌ๊ธฐ์ ์ ์๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์๋ก ๋ณํํด์ ์ถ๋ ฅํด์ผ ํจ : (char)ํ๋ณํ
5๏ธโฃ ํ์ฌ ์ด๋ฆฐ ํ์ผ ๋ซ๊ธฐ
fileInput.close();
- try-catch๋ฌธ ์ฌ์ฉํ ๋ ํ์ผ์ ๋ซ์์ฃผ์ด์ผ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ๋ค๋ฅธ ๊ณณ์์ ๋ฆฌ์์ค ์ฌ์ฉ์ด ๊ฐ๋ฅ
โช๏ธ FileInputStream : ํ์ผ ๋ด์ฉ ์์ฑ
- ์ถ๋ ฅ ์คํธ๋ฆผ(ํต๋ก) ์์ฑ
- ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ
1๏ธโฃ ํ์ผ ์์ฑ
FileOutputStream fileoutput = new FileOutputStream("happyday.txt");
fileoutput.write(๋ด์ฉ);
or
File f = new File("happyday.txt");
FileOutputStream fileoutput = new FileOutputStream(f);
fileoutput.write(๋ด์ฉ);
2๏ธโฃ ํ์ผ ๋ด์ฉ ๊ธฐ๋ก void write()
void write(int b) : ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ์ ์ ์๋ฅผ ๋ฌธ์๋ก ์ถ๋ ฅ
void(byte[] b) : ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ฌธ์๋ก ์ถ๋ ฅ
byte b[] = word.getBytes();
fileoutput.write(b);
- word์ ๋ด์ฉ์ ๋ฐ์ดํธ๋ก ๊ฐ์ ธ์ ๋ฐฐ์ด๋ก ์ ์ฅ
- fileoutput์ ๋ฐฐ์ด b ์ ๋ํ ๋ด์ฉ์ ๋ฌธ์๋ก ์ ์ฅ
๐ FileReader, FileWriter : ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ
- ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ
- ์ธ์ฝ๋ฉ๊ณผ ์ ๋์ฝ๋๊ฐ์ ๋ณํ์ ์๋์ผ๋ก ์ฒ๋ฆฌ
- FileReader์? ์ธ์ฝ๋ฉ โก๏ธ ์ ๋์ฝ๋
- FileWriter์? ์ ๋์ฝ๋ โก๏ธ ์ธ์ฝ๋ฉ
โช๏ธ FileReader : ํ์ผ ์ฝ๊ธฐ
- ํ ์คํธ ํ์ผ์ ์๋ฐ ํ๋ก๊ทธ๋จ์ผ๋ก ์ฝ์ด์ฌ ๋ ์ฌ์ฉ
- ๋ฌธ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์ ํ ์คํธ ํ์ผ๋ง ์ฝ์ ์ ์๋ค.
- ํ์ผ์ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ค์ ์ด์ฉํด ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ณ ์ฌ์ฉ์ ์ปดํจํฐ์ ์ ์ฅํ๋ ๊ฒ์ ๊ฐ๋ฅ์ผ ํจ
โช๏ธ FileWriter : ํ์ผ ์ฐ๊ธฐ
- ํ ์คํธ ํ์ผ์ ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ ์ํด์ ์ฌ์ฉ
- ๋ฌธ์ ๋ฐ์ดํฐ๋ง ์ฐ๊ธฐ ๋๋ฌธ์ ํ ์คํธ ํ์ผ๋ง ์ ์ฅํ ์ ์์
๐ก exception
- ๋ก์ง์ด ์คํ๋๋ ์ค์ ์ํ์ง ์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์ํ์ง ์๋ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ์ ๋ ์ฒ๋ฆฌ
- ์ข ๋ฅ๋ก๋ checked-exception(ex. IOException)๊ณผ unchecked-exception( ex.NullpointException)
๐ก printStackTrace()
- Exception์ด ๋ฐ์ํ ์ด์ ์ ์์น๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง ์ ์ฒด์ ์ธ ๋จ๊ณ๋ฅผ ๋ชจ๋ ์ถ๋ ฅ
๐ File ํด๋์ค
- Fileํด๋์ค๋ก ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ์ ์ ๊ทผํ ์ ์์
- File ์ธ์คํด์ค๋ ํ์ผ์ผ ์๋ ์๊ณ ๋๋ ํ ๋ฆฌ ์ผ ์๋ ์์
(1) getPath() : File ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฃ์ด์ค ๊ฒฝ๋ก๋ฅผ ๊ทธ๋๋ก ๋ฐํ
(2) getCanonicalPath() : ํ์ผ์ ์ ๊ท๊ฒฝ๋ก๋ฅผ ๋ฐํ
(3) getParent() :ํ์ผ์ ์กฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ฐํ
(4) getName : ํ์ผ๋ช
๋ฐํ
(5) canWrite() : ํ์ผ์ ์์ ํ ์ ์๋์ง ์ฌ๋ถ
(6) canExecute() : ํ์ผ์ ์คํํ ์ ์๋์ง ์ฌ๋ถ
(7) canRead() : ํ์ผ์ ์ฝ์ ์ ์๋์ง ์ฌ๋ถ
(8) createNEwFile() : ์ ํ์ผ ์์ฑ
(9) delet : ํ์ผ ์ญ์
https://docs.oracle.com/javase/7/docs/api/java/io/File.html ์ฐธ๊ณ ํ์ธ์ฌ !! ๋ ๋ง์ !!
โช๏ธ ํ์ผ ์ธ์คํด์ค ์์ฑ ๋ฐ ํ์ผ ์์ฑ
File file = new File("./dev"(๊ฒฝ๋ก), "javastudy.txt"(ํ์ผ๋ช
));
file.createNewFile();
- ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ ์คํ๋๋ ์์น๊ฐ ๊ฒฝ๋ก๋ก ๊ฐ์ฃผ๋จ