๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ๊ณต๋ถ€/JAVA

[์ƒํ™œ์ฝ”๋”ฉ] JAVA1 - 13. ์ž๋ฐ” ๋ฌธ์„œ ๋ณด๋Š” ๋ฒ• 2

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 9. 17.

 

 

์ƒํ™œ์ฝ”๋”ฉ JAVA1

-  4. ์ž๋ฐ” ๋ฌธ์„œ ๋ณด๋Š” ๋ฒ• - ์ธ์Šคํ„ด์Šค -

-  5. ์ž๋ฐ” ๋ฌธ์„œ ๋ณด๋Š” ๋ฒ• - ์ƒ์† -

 


 

4. ์ž๋ฐ” ๋ฌธ์„œ ๋ณด๋Š” ๋ฒ• - ์ธ์Šคํ„ด์Šค

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter; // PrintWriter๋Š” java.io์— ์†ํ•ด์žˆ๋‹ค.

public class InstanceApp {

	public static void main(String[] args) throws IOException {
		
		PrintWriter p1 = new PrintWriter("result1.txt"); // result1.txt ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•ˆ์— Hello 1์„ ๋„ฃ๊ณ  ์ข…๋ฃŒ
		p1.write("Hello 1");
		p1.close();
		
		PrintWriter p2 = new PrintWriter("result2.txt"); // result2.txt ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•ˆ์— Hello 2์„ ๋„ฃ๊ณ  ์ข…๋ฃŒ
		p2.write("Hello 2");
		p2.close();
		
	}

}

์ธ์Šคํ„ด์Šค๋ฅผ ์•Œ๊ธฐ์œ„ํ•ด PrintWriter๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋‹ค.

 

ํ•ด๋‹น ์ฝ”๋“œ๋Š” result1.txt, result2.txt ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ์ค€ ๋‹ค์Œ์— "Hello 1", "Hello 2"๋ผ๋Š” ๋‚ด์šฉ์„ ๊ฐ ๋ฉ”๋ชจ์žฅ์•ˆ์— ๋„ฃ์–ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 

๊ธฐ์กด์— ์šฐ๋ฆฌ๊ฐ€ ํด๋ž˜์Šค๋ฅผ ํ• ๋•Œ ๋ฐฐ์› ๋˜ Math์™€๋Š” ๋‹ฌ๋ฆฌ PrintWriter๋Š” java.io๋ผ๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•œ๋‹ค.

๋˜ํ•œ PrintWriter(String Filename) ์•ž์—  new ๋ผ๋Š” ๊ฒƒ์ด ๋ถ™์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์‹คํ–‰ํ•œ ๋‹ค์Œ ๋„ค๋น„๊ฒŒ์ดํ„ฐ์— refresh๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์คฌ์„๋•Œ txtํŒŒ์ผ์ด ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚ด์šฉ์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ์ž…๋ ฅํ–ˆ๋˜ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋Š”๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

// ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ
PrintWriter p1 = new PrintWriter("result1.txt");
p1.write("Hello 1");
p1.close();

PrintWriter p2 = new PrintWriter("result2.txt");
p1.write("Hello 2");
p1.close();


// ํด๋ž˜์Šคํ˜•ํƒœ๋กœ ๊ฐ™์€ ๋ช…๋ น์„ ๋‚ด๋ฆด ๋•Œ
// (์ฐธ๊ณ ๋กœ ํ•ด๋‹น ๋ช…๋ น์€ ์‹ค์ œ๋กœ ์ž‘๋™๋˜๋Š” ๊ฒƒ์ด ์•„๋‹˜)
PrintWrter.write("result1.txt", "Hello 1");
PrintWrter.write("result2.txt", "Hello 2");
PrintWrter.write("result3.txt", "Hello 3");
PrintWrter.write("result4.txt", "Hello 4");
PrintWrter.write("result5.txt", "Hello 5");
PrintWrter.write("result6.txt", "Hello 6");
PrintWrter.write("result7.txt", "Hello 7");
PrintWrter.write("result8.txt", "Hello 8");
PrintWrter.write("result9.txt", "Hello 9");
PrintWrter.write("result10.txt", "Hello 10");

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ฒˆ์—๋Š” ์™œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ ํ•œ๋‹ค.

ํ•ด๋‹น์ฝ”๋“œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ์„๋•Œ์™€ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ–ˆ์„๋•Œ์˜ ๊ฐ€์ •์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณธ ๊ฒƒ์ด๋‹ค.

 

์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด p1์ด๋ผ๊ณ  ํ•˜๋Š”๊ฒƒ์€ result1.txt์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ํŒŒ์ผ์•ˆ์— ๋‚ด์šฉ์„ ๋„ฃ๊ธฐ ์œ„ํ•ด write๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ–ˆ์„๋•Œ ๋งค๋ฒˆ ํŒŒ์ผ๋ช…์„ ์“ฐ๋Š”๊ฒƒ์ด ์•„๋‹Œ result1.txt์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ๋ณ€์ˆ˜ p1๊ณผ ํ•จ๊ป˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํด๋ž˜์Šค๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ ์€์–‘์˜ ๋ช…๋ น์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ข‹์•„๋ณด์ผ์ง€๋Š” ๋ชฐ๋ผ๋„ ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ๊ฐ’๋“ค์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋งค๋ฒˆ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฑฐ๋กœ์šธ์ˆ˜ ์žˆ๋‹ค.

 

์ฆ‰, ํด๋ž˜์Šค๋Š” ์ผํšŒ์„ฑ์„ ๋„๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ๋ช…๋ น์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์ธ์Šคํ„ด์Šค๋Š” ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ฐ™์€ ํŒŒ์ผ์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ถˆ๋Ÿฌ๋‚ด์•ผ ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์šฉ์ดํ•˜๋‹ค๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Constructor(์ƒ์„ฑ์ž)๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ๋œ๋‹ค.

 

ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งŒ๋“ ์‚ฌ๋žŒ์ด ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šค๋กœ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์œ„์˜ ์ƒํ™ฉ์ฒ˜๋Ÿผ Constructor(์ƒ์„ฑ์ž)๋ผ๋Š” ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 


5. ์ž๋ฐ” ๋ฌธ์„œ ๋ณด๋Š” ๋ฒ• - ์ƒ์†

ํ•ด๋‹น ํ™”๋ฉด์€ PrintWriter๋ผ๊ณ  ํ•˜๋Š” ํด๋ž˜์Šค์˜ ์‚ฌ์šฉ ์„ค๋ช…์„œ ์ด๋‹ค.

 

์•„๋ž˜๋ฅผ ๋ณด๋ฉด ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ PrintWriter๋Š” ๋ถ€๋ชจ์ธ Writer์—๊ฒŒ ์ƒ์†๋ฐ›์•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฉฐ, ๋˜ํ•œ Writer๋Š” Object๋ผ๊ณ  ํ•˜๋Š” ๋ถ€๋ชจ์—๊ฒŒ ์ƒ์† ๋ฐ›์•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

๋ฌด์Šจ ๋œป์ด๋‚˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ๋•Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— PirntWriter ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์ด ์ด๋ฏธ ์žˆ๋Š” Writer๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ, ๋ณ€์ˆ˜๋“ค์„ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›์œผ๋ฉด์„œ ๊ฑฐ๊ธฐ์— ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ ์‹œํ‚จ๊ฒŒ PrintWriter๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๊ณ  ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Writer๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์ด Object ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ, ๋ณ€์ˆ˜๋“ค์„ ๋ฌผ๋ ค๋ฐ›๊ณ  ๊ฑฐ๊ธฐ์— ์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ ์‹œ์ผœ์„œ Writer๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

 

์ด๋ฒˆ์—๋Š” ์ดํด๋ฆฝ์Šค๋ฅผ ํ†ตํ•ด์„œ PrintWriter๊ฐ€ ์–ด๋– ํ•œ ์ƒ์†๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋ฐฉ๋ฒ•์€ PrintWriter๋ฅผ ํด๋ฆญํ•œ ํ›„ Open Type Hierarchy๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด PrintWriter๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒ์†๊ด€๊ณ„๋“ค์„ ๋ชจ๋‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ Writer์—๊ฒŒ ์ƒ์†๋ฐ›๊ณ  Writer๋Š” Object์—๊ฒŒ ์ƒ์† ๋ฐ›์•˜๋‹จ๋Š ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด  Object๋ผ๋Š” ํด๋ž˜์Šค ์•ˆ์—๋Š” toString()์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ Writer๋‚˜ PrintWriter์—๋Š” toString()์ด๋ผ๋Š” ๊ฒƒ์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†๋‹ค.

ํ•˜์ง€๋งŒ Object์—๊ฒŒ ์ƒ์†๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์—  Writer๋‚˜ PrintWriter๊ฐ€ toString()์„ ์‚ฌ์šฉํ•˜์—ฌ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

Object๋Š” ์ž๋ฐ”์˜ ๊ธฐ๋ณธ์ ์ธ ํด๋ž˜์Šค๋กœ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Object๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ Writer๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ์™€ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ ์‹ถ๋‹ค๋ฉด Object๋ฅผ ์ƒ์†ํ•ด์•ผํ•˜๋Š” ๋ฐ ์ด๋ฅผ extends๋ผ๊ณ  ํ•œ๋‹ค.

๋˜ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ PrintWriter๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ ์‹ถ์€ ์‚ฌ๋žŒ์ด Writer์˜ ํŠน์ง•์„ ๊ฐ€์ง„ ๊ฒƒ์„ ํฌ๋งํ•œ๋‹ค๋ฉด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์†์„ ํ•˜๋ฉด ๋˜๋ฉฐ ๊ด€๊ณ„๋Š” ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ˜•์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.

 

๋˜ํ•œ PrintWriter ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ์‚ฌ๋žŒ์ด Writer๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” write()๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•„์„œ writer()์˜ ํŠน์ง•์„ ๋ณ€๊ฒฝํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ์™„์„ฑํ–ˆ์„ ๋•Œ PrintWriter๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์—์„œ ๋‚ด๊ฐ€ ์“ฐ๊ฒŒ๋  write()๋Š” PinrtWriter์˜ write๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋ ‡๊ฒŒ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ์˜ ํŠน์ง•์„ ๋ฐ”๊ฟ” ๋ฎ์–ด์“ฐ๊ธฐํ•œ ๊ฒƒ์„ overrideํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€