"ํŒŒ์ผ ์ž…๋ ฅ/์ถœ๋ ฅ์„ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค."

ํŒŒ์ผ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: FileInputStream ๋ฐ FileOutputStream . ์ด๋ฏธ ์ง์ž‘ํ•˜์…จ๊ฒ ์ง€๋งŒ FileInputStream์€ ํŒŒ์ผ์—์„œ ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  FileOutputStream์€ ํŒŒ์ผ์— ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…
FileInputStream(String fileName);
โ€” ์ƒ์„ฑ์ž์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๊ฐœ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋””์Šคํฌ์˜ ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
int read();
โ€” ์ด ๋ฉ”์„œ๋“œ๋Š” ํŒŒ์ผ์—์„œ ํ•œ ๋ฐ”์ดํŠธ๋ฅผ ์ฝ๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ int๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
int available();
โ€” ์ด ๋ฉ”์„œ๋“œ๋Š” ์ฝ์ง€ ์•Š์€(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ) ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
void close();
โ€” ์ด ๋ฉ”์„œ๋“œ๋Š” ์ŠคํŠธ๋ฆผ์„ ยซ๋‹ซ์Šต๋‹ˆ๋‹คยป. ์ŠคํŠธ๋ฆผ ์ž‘์—…์„ ๋งˆ์น˜๋ฉด ์ด๊ฒƒ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐœ์ฒด๋Š” ํŒŒ์ผ ๋“ฑ์„ ๋‹ซ๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด ์‹œ์ ์—์„œ ์ŠคํŠธ๋ฆผ์—์„œ ๋” ์ด์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์žฌ๋ฏธ์‚ผ์•„ ํŒŒ์ผ์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐ”์ดํŠธ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฐ”์ดํŠธ ํ•ฉ๊ณ„
public static void main(String[] args) throws Exception
{
 //Create a FileInputStream object bound to ยซc:/data.txtยป.
 FileInputStream inputStream = new FileInputStream("c:/data.txt");
 long sum = 0;

 while (inputStream.available() > 0) //as long as there are unread bytes
 {
  int data = inputStream.read(); //Read the next byte
  sum +=  data; //Add it to the running total
 }
 inputStream.close(); // Close the stream

 System.out.println(sum); // Display the sum on the screen.
}

"์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. FileOutputStream์€ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?"

"์ข‹์•„. ์ด๊ฒƒ ์ข€ ๋ด:"

๋ฐฉ๋ฒ• ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…
FileOutputStream (String fileName);
"์ด๊ฒƒ์€ ์ƒ์„ฑ์ž์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ๊ฐœ์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ๋””์Šคํฌ์˜ ํŒŒ์ผ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
void write(int data);
"์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ๋ฐ”์ดํŠธ๋ฅผ ์“ฐ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ 1๋ฐ”์ดํŠธ๋กœ ์ž๋ฆ…๋‹ˆ๋‹ค."
void flush();
"๊ธฐ๋กํ•  ๋ฐ์ดํ„ฐ๋Š” ๋จผ์ € ๋ฉ”๋ชจ๋ฆฌ์˜ ํฐ ๋ธ”๋ก์— ์ˆ˜์ง‘๋œ ๋‹ค์Œ ๋””์Šคํฌ์—๋งŒ ๊ธฐ๋ก๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค."

flush ๋ช…๋ น์€ ์ €์žฅ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ•์ œ๋กœ ๋””์Šคํฌ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

void close();
"์ด ๋ฉ”์„œ๋“œ๋Š” ์ŠคํŠธ๋ฆผ์„ ยซ๋‹ซ์Šต๋‹ˆ๋‹คยป. ์ŠคํŠธ๋ฆผ ์ž‘์—…์„ ๋งˆ์น˜๋ฉด ์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค."
๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐœ์ฒด๋Š” ํŒŒ์ผ ๋“ฑ์„ ๋‹ซ๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋” ์ด์ƒ ์ŠคํŠธ๋ฆผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ์ˆ˜ ์—†์œผ๋ฉฐ ํ”Œ๋Ÿฌ์‹œ๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

"๊ทธ๊ฒŒ ๋‹ค์•ผ?"

"๋„ค, ์‹ค์ œ๋กœ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹จ ํ•˜๋‚˜๋ฟ์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ write()์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์— ํ•œ ๋ฐ”์ดํŠธ๋งŒ ์”๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ผ์— ์›ํ•˜๋Š” ๋งŒํผ ๋งŽ์€ ์ •๋ณด๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•˜๋‚˜์˜ ํฌ๊ณ  ๋ณต์žกํ•œ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์ž‘์—…์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๊ธฐ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํฐ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์ฝ๊ณ  ์“ฐ๋Š” ์ž‘์—…์€ ํ•œ ๋ฒˆ์— ํ•œ ๋ฐ”์ดํŠธ์”ฉ ๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””์Šคํฌ์˜ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋””์Šคํฌ์— ํŒŒ์ผ ๋ณต์‚ฌ
public static void main(String[] args) throws Exception
{
 //Create a stream to read bytes from a file
 FileInputStream inputStream = new FileInputStream("c:/data.txt");
 //Create a stream to write bytes to a file
 FileOutputStream outputStream = new FileOutputStream("c:/result.txt");

 while (inputStream.available() > 0) //as long as there are unread bytes
 {
  int data = inputStream.read(); // Read the next byte into the data variable
  outputStream.write(data); // and write it to the second stream
 }

 inputStream.close(); //Close both streams. We don't need them any more.
 outputStream.close();
}

"๊ณ ๋งˆ์›Œ, Rishi. ๋“œ๋””์–ด ์ด ์ฝ”๋“œ๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ดํ–ˆ์–ด."