CS Study/Java
12. 파일 스트림
Ryannn
2022. 4. 7. 16:18
1. 파일에 데이터 입력/ 출력 / 복사하기
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
import java.io.FileReader;
import java.io.File;
public class Assign {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
FileWriter fout = null;
FileWriter fout2 = null;
fout2 = new FileWriter("c:\\Users\\cdsjw\\Desktop\\대학\\1-2\\컴퓨터 프로그래밍II\\1204\\홍길동2.txt");
while (true) {
System.out.print("입력>> ");
int num = scan.nextInt();
switch(num) {
case 1:
fout = new FileWriter("c:\\Users\\cdsjw\\Desktop\\대학\\1-2\\컴퓨터 프로그래밍II\\1204\\홍길동.txt");
System.out.print("데이터 입력>> ");
String line = scan.next();
fout.write(line, 0, line.length());
fout.close();
break;
case 2:
FileReader fin = new FileReader ("c:\\\\Users\\\\cdsjw\\\\Desktop\\\\대학\\\\1-2\\\\컴퓨터 프로그래밍II\\\\1204\\\\홍길동.txt");
int c;
while((c = fin.read()) != -1) {
System.out.print((char)c);
}
System.out.println();
fin.close();
break;
case 3:
File src = new File("c:\\Users\\cdsjw\\Desktop\\대학\\1-2\\컴퓨터 프로그래밍II\\1204\\홍길동.txt");
File dest = new File("C:\\Users\\cdsjw\\Desktop\\대학\\1-2\\컴퓨터 프로그래밍II\\1204\\홍길동2.txt");
int m;
try {
FileReader fr = new FileReader(src);
FileWriter fw = new FileWriter(dest);
while( (m = fr.read() ) != -1) { // 문자 하나 읽고
fw.write( (char)m ); // 문자 하나 쓰기
}
fr.close();
fw.close();
System.out.println("파일 복사 완료!");
}
catch (IOException e){
System.out.println("파일 복사 오류");
}
break;
default :
System.out.println("프로그램 끝!");
return;
}
}
}
}
2. 파일에 데이터 입력하기
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
FileWriter fout = null;
fout = new FileWriter("C:\\Users\\cdsjw\\Desktop\\대학\\1-2\\컴퓨터 프로그래밍II\\1204//Test3.txt");
while(true) {
System.out.print("입력>> ");
String line = scanner.nextLine();
if(line.length()==0) {
break;
}
fout.write(line,0,line.length());
fout.write("\n\n",0,2);
}
fout.close();
scanner.close();
}
}
3. 파일 인코딩하기
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileInputStream fin = null;
InputStreamReader in = null;
try {
fin = new FileInputStream("C:\\\\Users\\\\cdsjw\\\\Desktop\\\\대학\\\\1-2\\\\컴퓨터 프로그래밍II\\\\1204\\Test3.txt");
in = new InputStreamReader(fin, "US-ASCII");
int c;
System.out.println("인코딩 문자 집합 : "+ in.getEncoding());
while ((c = in.read())!=-1) {
System.out.print((char)c);
}
in.close();
fin.close();
}
catch(IOException e ) {
System.out.println("입출력 오류");
}
}
}
4. 파일에 byte자료형 배열 저장하기
import java.io.FileOutputStream;
import java.io.IOException;
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b[] = {7,33,3,4,-1,18};
try {
FileOutputStream fout = new FileOutputStream("C:\\\\\\\\Users\\\\\\\\cdsjw\\\\\\\\Desktop\\\\\\\\대학\\\\\\\\1-2\\\\\\\\컴퓨터 프로그래밍II\\\\\\\\1204//Test3.out.txt");
for (int i = 0; i<b.length;i++) {
fout.write(b[i]);
}
fout.close();
}
catch (IOException e) {
System.out.println("저장 불가! 경로 확인!");
return;
}
System.out.println("저장 성공!");
}
}
5. 파일 데이터를 byte 자료형 배열로 받아들이기
import java.io.FileInputStream;
import java.io.IOException;
public class Test5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b[] = new byte[6];
try {
FileInputStream fin = new FileInputStream("C:\\\\\\\\\\\\\\\\Users\\\\\\\\\\\\\\\\cdsjw\\\\\\\\\\\\\\\\Desktop\\\\\\\\\\\\\\\\대학\\\\\\\\\\\\\\\\1-2\\\\\\\\\\\\\\\\컴퓨터 프로그래밍II\\\\\\\\\\\\\\\\1204//Test3.out.txt");
int n=0,c;
while ((c = fin.read())!=-1) {
b[n] = (byte) c;
n++;
}
for (int i = 0;i<b.length;i++) {
System.out.print(b[i]+" ");
}
fin.close();
}
catch (IOException e) {
System.out.println("파일 읽기 오류! 경로 확인!");
}
}
}
6. BufferedReader로 파일 데이터 받아들이기
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test6 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileInputStream file = new FileInputStream("C:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Users\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\cdsjw\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\Desktop\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\대학\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\1-2\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\컴퓨터 프로그래밍II\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\1204//Test3.out.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(file,"UTF-16"));
String str;
while((str = in.readLine())!=null) {
System.out.println(str);
}
}
}
7. 파일 복사하기 - FileReader/FileWriter 활용
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File src = new File("c:\\windows\\system.ini");
File dest = new File("c:\\JAVA\\system.txt");
int c;
try {
FileReader fr = new FileReader(src);
FileWriter fw = new FileWriter(dest);
while ((c=fr.read())!=-1) {
fw.write((char)c);
}
fr.close();
fw.close();
System.out.println(src.getPath()+"틀"+dest.getPath()+"로 복사함");
}
catch (IOException e) {
System.out.println("파일 복사 오류");
}
}
}
8. 파일 복사하기 - FileStream 활용
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test9 {
public static void main(String[] args) {
File src = new File("c:\\Windows\\Web\\Wallpaper\\Theme1\\img1.jpg");
File dest = new File("copyimg.jpg");
int c;
try {
FileInputStream fi = new FileInputStream(src);
FileOutputStream fo = new FileOutputStream(dest);
byte [] buf = new byte [1024*10]; // 10KB 버퍼
while(true) {
int n = fi.read(buf); // 버퍼(buf)로 읽어옴(n은 실제 읽은 바이트)
fo.write(buf, 0, n); // buf[0]부터 n 바이트 쓰기
if (n < buf.length) break;
}
fi.close();
fo.close();
System.out.println(src.getPath()+ "를 " + dest.getPath()+ "로 복사함");
}
catch (IOException e) {
System.out.println("파일 복사 오류");
}
}
}