반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Linux세팅
- include지시자
- StringReader
- include 지시자
- sleep()메소드
- Daemon()
- 스레드그룸
- 상관 서브 쿼리
- 동기화
- 상관서브쿼리
- InputDialog
- ObjectInputStream
- ID중복
- 메모리스트림
- first-child
- isinterrupted()
- 표현 언어
- String char[] 형변환
- MemoryStream
- 아이디중복
- Linux셋팅
- 리눅스셋팅
- include액션태그
- StringWriter
- 리눅스세팅
- interrupted()
- ThreadGroup()
- first-of-child
- char[] String 형변환
- interrupt()
Archives
- Today
- Total
다연이네
[days25] 파일 복사하기 (1. 실행파일 2.txt파일) 본문
반응형
[실행파일 복사]
FileInputStream, FileOutputStream
1. 그냥 복사 - 느리다
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Re04 {
public static void main(String[] args) {
String originalpath = "C:\\Users\\82103\\Pictures\\Saved Pictures\\dayon.jpg";
// 원래 있는 사진경로\\사진명
String copypath = "C:\\Users\\82103\\Pictures\\Camera Roll\\copydayon.jpg";
// 복사할 경로\\사진명
fileCopy_byteStream(originalpath, copypath);
System.out.println("=END=");
}
private static void fileCopy_byteStream(String originalpath, String copypath) {
//처리시간 확인을 위해 nanoTime() 사용
long startTime = System.nanoTime();
File originalfile = new File(originalpath); // 원래 파일
System.out.println(originalfile.length() +"byte 복사 예정");
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(originalfile); //원래 파일을 IN
//이 대신에 originalpath 삽입해도 됨
os = new FileOutputStream(copypath); //복사 경로에 OUT
int b = 0;
while((b=is.read())!=-1) {
os.write(b); //os에 is에서 읽은 정보들(b) 넣기
}
os.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
long estimatedTime = System.nanoTime() - startTime;
System.out.println("> 처리시간: "+estimatedTime+"ns");
}
}
출력값
3615290byte 복사 예정
> 처리시간: 54314257000ns
=END=
2. 보조 스트림 사용하여 복사 - 빠르다
+ BufferedInputStream, BufferedOutputStream
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Re04 {
public static void main(String[] args) {
String originalpath = "C:\\Users\\82103\\Pictures\\Saved Pictures\\dayon.jpg";
String copypath = "C:\\Users\\82103\\Pictures\\Camera Roll\\copydayon.jpg";
fileCopy_byteStream(originalpath, copypath);
System.out.println("=END=");
}
private static void fileCopy_byteStream(String originalpath, String copypath) {
long startTime = System.nanoTime();
File originalfile = new File(originalpath);
System.out.println(originalfile.length() +"byte 복사 예정");
InputStream is = null;
OutputStream os = null;
//
final int N = 1024;
byte[] buffer = new byte[N];
BufferedInputStream bis = null;
BufferedOutputStream bos= null;
try {
is = new FileInputStream(originalfile);
os = new FileOutputStream(copypath);
//
bis = new BufferedInputStream(is, N);
bos = new BufferedOutputStream(os, N);
int n = 0;
while((n=bis.read(buffer))!=-1) {
bos.write(buffer, 0, n);
}
os.flush();
bos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
is.close();
os.close();
bis.close();
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
long estimatedTime = System.nanoTime() - startTime;
System.out.println("> 처리시간: "+estimatedTime+"ns");
}
}
출력값
3615290byte 복사 예정
> 처리시간: 124216100ns
=END=
[텍스트파일 복사]
FileReader, FileWriter
1. 그냥 복사 - 느리다
package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Re08 {
public static void main(String[] args) {
String originalpath = ".\\src\\days25\\Ex04.java";
String copypath = "C:\\Class\\Ex04_Copy.java";
fileCopy_textStream(originalpath, copypath);
System.out.println("=END=");
}
private static void fileCopy_textStream(String originalpath, String copypath) {
long startTime = System.nanoTime();
File originalfile = new File(originalpath);
System.out.println(originalfile.length() +"byte 복사 예정");
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(originalfile); //원래 파일을 IN
fw = new FileWriter(copypath); //복사 경로에 OUT
int b = 0;
while((b=fr.read())!=-1) {
fw.write(b); //os에 is에서 읽은 정보들(b) 넣기
}
fw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fr.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
long estimatedTime = System.nanoTime() - startTime;
System.out.println("> 처리시간: "+estimatedTime+"ns");
}
}
출력값
1823byte 복사 예정
> 처리시간: 17144200ns
=END=
2. 보조 스트림 사용하여 복사 - 빠르다
+ bufferedReader, bufferedWriter
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Re08 {
public static void main(String[] args) {
String originalpath = ".\\src\\days25\\Ex04.java";
String copypath = "C:\\Class\\Ex04_Copy.java";
fileCopy_textStream(originalpath, copypath);
System.out.println("=END=");
}
private static void fileCopy_textStream(String originalpath, String copypath) {
long startTime = System.nanoTime();
File originalfile = new File(originalpath);
System.out.println(originalfile.length() +"byte 복사 예정");
FileReader fr = null;
FileWriter fw = null;
//
final int N = 1024;
char[] buffer = new char[N];
BufferedReader br = null;
BufferedWriter bw = null;
try {
fr = new FileReader(originalfile);
fw = new FileWriter(copypath);
br = new BufferedReader(fr, N);
bw = new BufferedWriter(fw, N);
int n = 0;
while((n=br.read(buffer))!=-1) {
bw.write(buffer, 0, n);
}
fw.flush();
bw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fr.close();
fw.close();
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
long estimatedTime = System.nanoTime() - startTime;
System.out.println("> 처리시간: "+estimatedTime+"ns");
}
}
출력값
1823byte 복사 예정
> 처리시간: 2881500ns
=END=
반응형
'Java' 카테고리의 다른 글
[days25] 보조스트림 - InputStreamReader, PrintStream/ PrintWriter (0) | 2020.10.25 |
---|---|
[days25] File 객체 (0) | 2020.10.25 |
[days25] FileOutputStream을 이용해 파일 만들기 (0) | 2020.10.25 |
[days24] InputStream - 사진 정보 2진수로 출력 / 바이트씩 읽기 / String입력받기 (0) | 2020.10.24 |
[days24] 자바 입출력(I/O) 이론 개념 (0) | 2020.10.23 |
Comments