์๋ ํ์ธ์, ์ผ์ด์น์ ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ์๋ฐ๋ก ํ ์คํธ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด์ ์ถ๋ ฅํด๋ณด๋ ์์ค๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฐ์ CLI ํ๊ฒฝ์ด๋ ๋ค๋ฅธ IDE ํด ํ๊ฒฝ์ด๋ Java ํ๋ก๊ทธ๋๋ฐ์ ์คํํ๋ ค๋ฉด ๋ฉ์ธ ํจ์๊ฐ ํ์ํ์ฃ .
๊ทธ๋์ ํด๋์ค ํ์ผ์ ๋ง๋ค๋ฉด public void main(String[] args) {} ํจ์๋ฅผ ์์ฑํด์ ์ฐ์ฃ .
์ด๋ main๋ฉ์๋์ ์ธ์๋ก ๋ฐ๋ ์ String[] args ๊ฐ ํ์ผ๋ช ์ ์ ๋ ฅ๋ฐ๊ธฐ ์ํ ํต๋ก์ ๋๋ค.
์ปค๋งจ๋ ๋ผ์ธ ๋ช ๋ น์ผ๋ก java myapp a.txt ๋ผ๊ณ ์ ๋ ฅ์ ํด์ ์คํํ๋ฉด ์ args์ a.txt๋ผ๋ ์คํธ๋ง ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
์ฆ, ํ์ผ๋ช ์ ์ ๋ ฅ๋ฐ๊ฒ ๋๋ ๊ฒ์ด์ฃ .
ํ์ผ๋ช ์ ์ ๋ ฅ๋ฐ์์ผ๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ ํ์ผ์ ์ด์ด์ ์์ ์๋ ๋ด์ฉ์ ์ถ๋ ฅํ๊ธฐ๋ง ํ๋ฉด ๋๋ ๊ฒ๋๋ค.
๊ทธ๋ ๋ค๊ณ ๋ฌด์์ ํ์ผ์ ์ด ์๋ ์์ ๊ฒ๋๋ค. ๋ง์ฝ ๊ทธ ํ์ผ์ด ์กด์ฌํ์ง ์์ผ๋ฉด?? ์๋ฌ ์ฒ๋ฆฌ๋ ํด์ค์ผ ๊ฒ ์ฃ ?
์, ๊ทธ๋ผ ํ๋ํ๋ ์ฐจ๊ทผ์ฐจ๊ทผ ํด ๋ณผ๊น์?
์ฐ์ ํด๋์ค๋ฅผ ํ๋ ์์ฑํ๊ณ ๋ฉ์ธ ํจ์๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค.
public class ReadFileAndPrint { public static void main(String[] args) { } }
ReadFileAndPrint๋ผ๋ ์ด๋ฆ์ ์๋ฐํ์ผ์ ํ๋ ์์ฑํด์ ๋ฉ์ธํจ์๋ฅผ ์ ์ํ์ต๋๋ค.
์, ๊ทธ๋ผ ์ด์ ๋ญ ํด์ผ ํ ๊น์? ์ ์์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ ํ์ผ๋ช ์ ์ ๋ ฅ๋ฐ์์ args๋ก ์ ๋ฌํด์ฃผ๋ ๊ฒ์ ์๋ฐ์์ ์์์ ์๋์ผ๋ก ํด์คํ ๋
์ฐ๋ฆฌ๋ ๊ทธ ์ ๋ฌ๋ฐ์ ํ์ผ๋ช ์ ๊ฐ์ง๊ณ ์ง์ง๊ณ ๋ณถ๊ณ ํ๋ฉด ๋๊ฒ ์ฃ ?
์ผ๋จ ์ ๋ ฅ ๋ฐ์ ํ์ผ๋ช ์ด ์กด์ฌํ๋์ง๋ฅผ ํ์ธํด์ ์๋ฌ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ๊ฒ ์ต๋๋ค.
public static void main(String[] args) { // 1. ์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์๋์ง ๊ฒ์ฌ if ( args.length == 0 ){ System.out.println("์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์์ต๋๋ค."); System.exit(0); } }
์ ์ฝ๋๋ args๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ด ์๋์ง ์คํธ๋ง ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ฒ์ฌํด์ ์ ๋ ฅ๋ฐ์ ๊ฐ์ด ์์ผ๋ฉด ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํ๋๋ก ํด๋์์ต๋๋ค.
์, ๊ทธ๋ผ ์ค์ ๋ก ์ ๋ ฅ ๋ฐ์ ๊ฐ์ด ์์ ๋๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
๊ทธ ์ ๋ ฅ๋ฐ์ ๊ฐ์ผ๋ก ํ์ผ์ ์ฝ์ด๋ค์ฌ์ผ ๊ฒ ์ฃ ?
์ด์ ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
// 2. ์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์กด์ฌํ๋์ง ๊ฒ์ฌ File file = new File(args[0]); if ( file.exists() ){ }
์ ๋ ฅ๋ฐ์ ํ์ผ์ด ํ๊ฐ๋ผ๋ ๊ฐ์ ํ์ args๋ฐฐ์ด์ 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ๊ฐ๋ง ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
ํ์ผ์ ์๋ฐ์์ค๋ก ์ฝ์ด๋ค์ผ ๋๋ File ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. File ์์ฑ์์ ํ์ผ๋ช ์ ๋ด๊ณ ์๋ args[0] ์ ์ ๋ฌํ์ฌ new ํค์๋๋ก ์์ฑํ๋ฉด ํด๋น ์ด๋ฆ์ ํ์ผ์ File ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ if ๋ฌธ์ ํตํด์ ํด๋น ํ์ผ๋ช ์ ๊ฐ๋ ํ์ผ์ด ์ค์ ๋ก ์์คํ ์์ ์กด์ฌํ๋์ง ํ์ธ์ ํฉ๋๋ค.
if ๋ฌธ ์์์๋ ํด๋น ํ์ผ๋ช ์ ๊ฐ๋ ํ์ผ์ด ์ค์ ๋ก ์กด์ฌํ์ ๋ ํด์ผํ ์ผ์ ์ฝ๋๋ก ์ ์ด์ฃผ๋ฉด ๋๊ฒ ์ฃ .
์ฐ๋ฆฌ๋ File ๊ฐ์ฒด๋ฅผ BufferedReader ๋ฅผ ์ด์ฉํด์ ์ข๋ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ํํ๋ก ๋ฐ๊ฟ ๊ฒ๋๋ค.
์ด์ if ๋ฌธ ์์ ๋ค์ ์์ค๋ฅผ ์ถ๊ฐํด ๋ณผ๊น์?
// 3. ํ ์คํธ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด์ ์ถ๋ ฅ BufferedReader br = new BufferedReader(new FileReader(file)); while( br.ready() ){ System.out.println(br.readLine()); } br.close();
์ ์ฝ๋๋ฅผ ๋ณด๋ฉด File ๊ฐ์ฒด์ธ file์ FileReader๋ก ๊ฐ์ผ ๋ค์ ๋ค์ BufferedReader๋ก ๊ฐ์์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด BufferedReader ์ readLine() ๋ฉ์๋๋ฅผ ์ด์ฉํด์ ์์ฝ๊ฒ ๋ผ์ธ ๋จ์๋ก ํ์ผ์ ์ฝ์ด๋ค์ผ ์ ์์ต๋๋ค.
๋ด์ฉ์ด ์กด์ฌํ๋์ง๋ br.reader() ๋ฅผ ์ด์ฉํด์ ๊ฒ์ฌ๋ฅผ ํ๊ณ true๊ฐ ๋ฐํ๋ ๊ฒฝ์ฐ์ ๊ณ์ํด์ ํ์ค์ฉ ์ฝ์ด๋ด๋ ค๊ฐ๋ฉด์ ์ถ๋ ฅํ๋๋ก ๋ก์ง์ด ๊ตฌ์ฑ๋์ด์์์ ํ์ธํ ์ ์์ต๋๋ค.
์, ๊ทธ๋ผ ์ ์ฒด ์์ค๋ฅผ ๋ค์ ํ๋ฒ ๋ณด๋๋ก ํ์ฃ .
public class ReadFileAndPrint { public static void main(String[] args) throws IOException {
// 1. ์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์๋์ง ๊ฒ์ฌ if ( args.length == 0 ){ System.out.println("์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์์ต๋๋ค."); System.exit(0); } // 2. ์ ๋ ฅ๋ฐ์ ํ์ผ์ด ์กด์ฌํ๋์ง ํ์ธ File file = new File(args[0]); if ( file.exists() ){ // 3. ํ์ผ์ด ์กด์ฌํ๋ฉด, ํ ์คํธ ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด์ ์ถ๋ ฅ BufferedReader br = new BufferedReader(new FileReader(file)); while( br.ready() ){ System.out.println(br.readLine()); } br.close(); }
}
์ด์ ์๋ฐ ํด๋์ค ํ์ผ์ ์ปดํ์ผํ๊ณ ์คํํ ๋ ์ธ์๋ก ์ํ๋ ํ ์คํธ ํ์ผ์ ์ ๋๊ฒฝ๋ก๋ช ์ ๋ฃ์ด์ฃผ์ธ์.
์๋๊ฒฝ๋ก๋ช ์ ๋ฃ์ ๊ฒฝ์ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ํ์ผ์ ๋ชป ์ฐพ์ ์ ์์ต๋๋ค.
ํ์ผ์ ๋ด์ฉ์ด ์ ์ถ๋ ฅ๋๋ค๋ฉด ์ ๋ฐ๋ผ์ค์ ๊ฒ๋๋ค.
์ด๋์ ? ๋ณ๋ก ์ด๋ ต์ง ์์ฃ ??
์ด์์ผ๋ก ์๋ฐ๋ก ํ ์คํธ ํ์ผ ์ฝ์ด์ ์ถ๋ ฅํ๊ธฐ ํฌ์คํ ์ ๋ง์น๊ฒ ์ต๋๋ค.
๊ถ๊ธํ์ ์ ์์ผ๋ฉด ๋๊ธ๋ฌ์์ฃผ์ธ์ ^-^
'๐ป Programming > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS S3 ๋ฒํท์ ํ์ผ ์ ๋ก๋ํ๊ธฐ (์๋ฐ) (0) | 2018.08.17 |
---|---|
[Java] Heap Memory Check (์๋ฐ ํ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ธก์ ) (0) | 2018.07.28 |
ํ๋ก์ ํธ ํ์ฌ ๊ฒฝ๋ก ์ป๊ธฐ ( Getting current working directory ) (0) | 2016.06.15 |
์๋ฐ ๊ฐ์ฒด๋ฅผ byte[] ๋ก ๋ณํํ๊ธฐ (0) | 2015.08.08 |
JVM ํด๋์ค๋ก๋๋? ( What is ClassLoader ? ) (0) | 2015.06.18 |