Programming Language/Java
[JAVA] 텍스트 파일 및 바이너리 파일 복사
BS Kwak
2020. 12. 12. 19:52
바이트 스트림, 문자스트림, 버퍼 스트림 정의
텍스트 파일 복사
- FileReader와 FileWriter이용
더보기
(코드 알고리즘 )
원본파일 문자 하나씩 읽어서 복사 파일에 하나씩 쓰면 된다
package streamStudy;
import java.io.*;
public class practice_file8 {
public static void main(String[] args) {
File src = new File("c:\\windows\\system.ini"); //원본 file 경로명
File dest = new File("system.txt"); //복사 file 경로명
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("파일 복사 오류");
}
}
}
cf) 파일 클래스
- 파일의 경로명을 다루는 클래스 (java.io.File)
- 파일관리 기능 (이름 변경, 삭제, 디렉터리 생성, 크기, 등)
- f.getName() f.getPath() f.getParent() f.listFiles() 등등이 있음
바이너리 파일 복사
- 바이트 스트림 이용
package streamStudy;
import java.io.*;
public class practice_file9 {
public static void main(String[] args) throws IOException{
File src = new File("test.out");
File dest = new File("copytest.out");
int c;
try {
FileInputStream fi = new FileInputStream(src);
FileOutputStream fo = new FileOutputStream(dest);
while((c=fi.read())!=-1) {
fo.write((byte)c);
}
fi.close(); fo.close();
System.out.println("복사 성공");
}catch(IOException e) {
System.out.println("실패");
}
}
}
블록 단위로 바이너리 파일 고속 복사
- 10KB 단위로 읽고 쓰도록 하여 고속으로 파일 복사
package streamStudy;
import java.io.*;
public class practice_file10 {
public static void main(String[] args) {
File src = new File("C:\\Users\\0214k\\OneDrive\\바탕 화면\\picture.jpg");
File dest = new File("picture2.jpg");
try {
FileInputStream fi = new FileInputStream(src);
FileOutputStream fo = new FileOutputStream(dest);
byte[] buf = new byte[1024*10];
while(true) {
int n= fi.read(buf);
fo.write(buf,0,n); //buf[0]부터 n byte 쓰기
if(n<buf.length) break;
}
fi.close(); fo.close();
System.out.println("복사 성공");
}
catch(IOException e) {
System.out.println("복사 오류");
}
}
}
바이너리 파일이므로 사진도 복사 가능