๐ ์์ฉ 6์ฅ ํ์ผ ์กฐ์
ํ์ผ ์กฐ์์ ๊ธฐ๋ณธ ์์
๐ก
1. ํ์ผ์ ์ฐ๋ค
2. ํ์ผ์ ์ฝ๊ฑฐ๋ ์ด๋ค
3. ํ์ผ์ ๋ซ๋๋ค
FileWriter
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
// ํ์ผ ์ด๊ธฐ, append ๋ชจ๋
FileWriter fw = new FileWriter("data.txt", true);
// ๋ด์ฉ ์์ฑ
fw.write("Hello World");
fw.flush(); // ์ค์ ํ์ผ ์ฐ๊ธฐ ์์
fw.close(); // ํ์ผ ๋ซ๊ธฐ
}
}
FileReader
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("data.txt");
int ch = fr.read(); //char๋ฅผ ์ฝ์ด์ค๋๋ฐ int๋ฅผ ์ ์ฅํจ
System.out.println(ch);
}
}
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("data.txt");
int ch = fr.read(); //char๋ฅผ ์ฝ์ด์ค๋๋ฐ int๋ฅผ ์ ์ฅํจ
while (ch != -1) {
System.out.println((char) ch);
ch = fr.read();
}
}
}

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.crypto.Data;
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(fileRead("Data.txt"));
}
public static String fileRead(String fileName) throws IOException {
String result = "";
FileReader fr = new FileReader("data.txt");
int ch = fr.read(); //char๋ฅผ ์ฝ์ด์ค๋๋ฐ int๋ฅผ ์ ์ฅํจ
while (ch != -1) {
result += (char) ch;
ch = fr.read();
}
return result;
}
public static void fileWriterCode() throws IOException {
// ํ์ผ ์ด๊ธฐ, append ๋ชจ๋
FileWriter fw = new FileWriter("data.txt", true);
// ๋ด์ฉ ์์ฑ
fw.write("Hello World");
fw.flush(); // ํ์ผ ์ฐ๊ธฐ ์์
fw.close(); // ํ์ผ ๋ซ๊ธฐ
}
}

๋ฐ์ด๋๋ฆฌํ์ผ์ ์กฐ์
ํ์ผ์๋ ํฌ๊ฒ ๋ ์ข ๋ฅ์ ํ์ผ์ด ์๋ค
๐ก
ํ
์คํธ ํ์ผ
- ๋ฌธ์๋ก ๊ตฌ์ฑ
- ๋ฉ๋ชจ์ฅ, ์์ค์ฝ๋, HTML ๋ฑ์ด ํด๋น
- FileReader, FileWriter ์ฌ์ฉ
๋ฐ์ด๋๋ฆฌ ํ์ผ
- ๋ฌธ์์ ๋ฐ์ดํฐ(๋ฐ์ดํธ ๋ฐฐ์ด)
- Excel, Java์ class ํ์ผ, ์ด๋ฏธ์ง ํ์ผ, ๋์์ ํ์ผ, ์์ ํ์ผ ๋ฑ
- FileInputStream, FileOutputStream ์ฌ์ฉ
ํ์ผ์ 2์ง์ 01000001์ ์ถ๊ฐ๋ก ์ ์ฅํ๋ ํ๋ก๊ทธ๋จ
public class Main {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("save.txt", true);
fos.write(65); // A
fos.write(66); // B
fos.flush();
fos.close();
}
}
close()๋ฅผ ์ ํ์ ๊ฒฝ์ฐ
๐ก
ํ๋ก๊ทธ๋จ ์คํ ์ค์ธ ์ํ์์ ํ์ผ์ ๋ค ์ฌ์ฉ ํ์์๋, ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ํด๋น ๊ทธ ํ์ผ์ ์ด ์ ์๋ค.

์์ธ์ฒ๋ฆฌ

๐ก
์ฌ๋ฐ๋ฅธ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ ํ์ผ์ ๋ฐ๋์ close() ํด์ผ ํ๋ค.
close()๋ ๋ฐ๋์ ์ฒ๋ฆฌ ๋์ด์ผ ํ๋ฏ๋ก, finally ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๊ณ , ํด๋น close()์ ๋ํด ๋ค์ try-catch ํ๋ ํํ๋ก ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. (Lagacy ํํ)
๐ก
Java8 ๋ถํฐ๋ Closeable์ ๊ตฌํํ๊ณ ์๋ ๊ฐ์ฒด๋ trye() ์์ ์๋์ผ๋ก close() ํด ์ค๋ค.

์คํธ๋ฆผ (Stream)
๐ก
1.
FileReader
๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ์ฝ๊ฑฐ๋ ์ฐ๋ API ์
2. ํ๋ฒ์ 10GB์ ํ์ผ์ ์ฝ์ด๋ฒ๋ฆฌ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ด ๋ฐ์ ํจ
3. ์คํธ๋ฆผ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ํ๋ ค๋ณด๋ด๊ณ ์ฒ๋ฆฌํ๋ฉด ์ด๋ฅผ ํด๊ฒฐํ ์ ์์
4. FileReader
, FileWriter
, FileInputStream
, FileOutputStream
๋ ๋ชจ๋ ์คํธ๋ฆผ ๊ณ์ด
์ฌ๋ฌ๊ฐ์ง ์คํธ๋ฆผ

๋ฐ์ดํฐ์ ํ๋ฆ์ Stream์ด๋ผ ๋ณผ ์ ์๋ค.
๋ฌธ์์ด๋ก๋ถํฐ ํ ๊ธ์์ฉ ์ฝ๊ธฐ

public class Main {
public static void main(String[] args) throws IOException {
String msg = "Hello World";
Reader reader = new StringReader(msg);
}
}
๋ฐ์ดํธ ๋ฐฐ์ด์ ๊ฐ์ ์ฐ๊ธฐ

ํ์ค ์ ์ถ๋ ฅ
๐ก
ํํฐ
๐ก
FilterReader
, FilterWriter
, FilterInputStream
, FilterOutput
์ ์์ ๋ฐ๋ ํด๋์ค๋ค.
๐ก
๊ฐ ์คํธ๋ฆผ๊ฐ ์ฐ๊ฒฐ์ด ๋์ด ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฒํผ๋ง์ ์ํ ํํฐ
๐ก
๋ฌธ์์ฉ ํํฐ :
BufferedReader
, BufferedWriter
๋ฐ์ดํธ์ฉ ํํฐ : BufferedInputStream
, BufferedOutputStream
์ฒ๋ฆฌ์ฑ๋ฅ ํฅ์
- ํ์ผ์ ์ฐ๊ฑฐ๋ ์ฝ์๋ ๋ง๋ค ๋งค๋ฒ ํ๋๋์คํฌ๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ๋งค์ฐ ๋๋ฆผ
- ํ ๋ฒ์ ๋ชจ๋ ์์ ์ ์ํํ์ฌ ์ฐ๋ ๊ฒ์ด ํจ์จ์
- ๋ฒํผ๋ง์ ๋ฏธ๋ฆฌ ์ฝ์ด ๋๊ฑฐ๋ ํ ๋ฒ์ ์ฐ๋ ์์
๐ก
FileReader
์ BufferReader
๋ฅผ ์ฐ๊ฒฐํด ์ฌ์ฉํ ์ ์๋ค.
ํ์ผ ์์คํ ์ ์กฐ์
File file = new File("save.dat");
ํ์ผ ์กฐ์ ๋ฉ์๋
๐ก
์ญ์ : delete()
์ด๋ฆ ๋ณ๊ฒฝ : renameTo(File dest)
์กด์ฌ ํ์ธ : exists()
ํ์ผ์ธ์ง? : isFile()
๋๋ ํ ๋ฆฌ์ธ์ง? : isDirectory()
์ฉ๋ : length()
ํด๋ ๋ด ํ์ผ๋ค : listFiles()
๋ณต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๋๋ค.
java.nio.file.Files
ํ์ผ์ ๊ด๋ จ๋ ๋ค์ํ ๊ธฐ๋ฅ์ Files ํด๋์ค
์์ ์ ๊ณตํ๊ณ ์๋ค.
๐ก
<์ ๊ณต๋๋ ํํ์ ์ธ ๊ธฐ๋ฅ>
๋ณต์ฌ, ์ด๋, ์ญ์ , ๋ชจ๋ ๋ด์ฉ ์ฝ๊ธฐ, ๋ชจ๋ ํ์ ์ฝ์ด์ ๋ฆฌ์คํธ๋ก ๋ฐํ ๋ฑ
Files (Java Platform SE 8 )
Path ๊ฐ์ฒด๋ฅผ ์ป๋ ๋ฐฉ๋ฒ
Path path1 = Paths.get("save.dat");
Path path2 = file.thPate();
๐์ฐ์ต ๋ฌธ์
6-1

package com.pkd.Exam;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void fileCopy(String file) throws IOException {
int index = file.lastIndexOf(".");
StringBuilder sb = new StringBuilder();
sb.append(file.substring(0, index));
sb.append("(๋ณต์ฌ๋ณธ)");
sb.append(file.substring(index));
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(sb.toString());
int i = fis.read();
while (i != -1) {
fos.write(i);
i = fis.read();
}
fis.close();
fos.close();
}
public static void main(String[] args) {
try {
fileCopy("data.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}

๐ก
fileCopy()
๋ฉ์๋๋ ํ์ผ์์น/ํ์ผ๋ช
์ String ํํ๋ก ์ธ์๋ก ๋ฐ์ ๋ณต์ฌ๋ฅผ ์ํํ๋ค.
data.txtํ์ผ์ ์ ์์ ์ผ๋ก ๋ณต์ฌํ ๊ฒ์ ๋ณผ ์ ์๋ค.
6-2

package com.pkd.Exam;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class Main {
// 6-1
public static String fileCopy(String fileName) throws IOException {
String newFileName = "";
int index = fileName.lastIndexOf(".");
StringBuilder sb = new StringBuilder();
sb.append(fileName.substring(0, index));
sb.append("(๋ณต์ฌ๋ณธ)");
sb.append(fileName.substring(index));
newFileName = sb.toString();
FileInputStream fis = new FileInputStream(fileName);
FileOutputStream fos = new FileOutputStream(newFileName);
int i = fis.read();
while (i != -1) {
fos.write(i);
i = fis.read();
}
fis.close();
fos.close();
return newFileName;
}
// ๋ฒํผ๋ง์ ํตํด ๋ณต์ฌ์ ์์ถ
public static void fileBufferingGzip(String fileName, String newFileName) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(fileName));
BufferedOutputStream bos =
new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(newFileName)));
String line = null;
while ((line = br.readLine()) != null) {
bos.write(line.getBytes());
bos.write("\n".getBytes());
}
br.close();
bos.close();
}
public static void main(String[] args) {
try {
String fileName = "data.txt";
fileBufferingGzip(fileName, "data.zip");
} catch (IOException e) {
e.printStackTrace();
}
}
}
๐ก
ํ์ผ์ด buffering๊ณผ GZIP์ ํตํด ๋ณต์ฌ ๋ฐ ์์ถ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Uploaded by N2T