FileReaderToMonitor
"파일"로부터 "한 문자"씩 읽어서 "모니터"에 출력
데이타 소스:파일
노드 스트림:FileReader(문자 기반)
데이타 목적지:모니터
노드 스트림:System.out (바이트 기반)
브릿지 스트림:OutputStreamWriter
1.입력 스트림 생성
FileReader fr = new FileReadr("src/io24/node/KeyboardWriter.txt") ==>파일저장되어있는 경로!
2.출력 스트림 생성
PrintStream out = System.out; => 이거 바로 못씀 의미가 없어...
2-3 브리지 스트림으로 1바이트씩 내보내는 데이터를 문자단위로 변환(낱개출력을 뭉텅이 출력으로)
OutputStreamWriter osw = new OutputStreamWriter(System.out);
fr로 읽고 out으로 출력하면 한글깨짐
3.출력
fr로 읽고 osw로 출력
int data;
while((data=fr.read()) !=-1) {
osw.write(data);
osw.flush();
}
fr.close();
InOutExample
문제
STDNodeInOut.java "파일"의 "내용"을 읽어서 모니터와 "파일"로 출력하여라. =>fileinputstream
파일로 출력시 파일명은 STDNodeInOut.txt로 하자 => fileoutputstream
1.입력 스트림 생성
FileInputStream fis = new FileInputStream("src/io24/node/STDNodeInOut.java");
2.출력 스트림 생성
FileOutPutStream fos = new FileOutputStream("src/io24/node/STDNodeInOut.txt");
3.출력
fis로 읽고 fos로 출력
int data;
while((data = fis.read()) != -1) {
fos.write(data);
fos.flush();
System.out.write(data);
System.out.flush();
}
fis.close();
fos.close();
FileReaderToFileWriter
문제
FileInputStreamToFileMonitorOutput.java를 "문자"단위로 읽어서 => filereader
FileInputStreamToFileMonitorOutput.txt "파일"로 "문자"단위로 저장하여라. =>filewriter
1.입력 스트림 생성
FileReader fr = new FileReader("src/io24/node/FileInputStreamToFileMonitorOutput.java");
2.출력 스트림 생성
FileWriter fw = new FileWriter("src/io24/node/FileInputStreamToFileMonitorOutput.txt");
3.출력
fr로 읽고 fw로 출력
int data;
while((data = fr.read()) != -1){
fw.write(data);
fw.flush();
}
fw.close();
fr.close();
FileInputStreamToFileMonitorOutput
파일로부터(Keyboard.txt) 데이타를 읽어 모니터 와 파일(KeyboardCopy.txt)에 동시 출력
파일에 직접 연결이 가능한 바이트 기반의 노드 스트림 이용
※데이타 소스나 데이타 목적지에 따라 입출력 노드 스트림 결정
데이타 소스:File
바이트 기반의 입력 스트림:FileInputStream
데이타 목적지:Monitor, File
바이트 기반의 출력 스트림:System.out-PrintStream타입
바이트 기반의 출력 스트림:FileOutputStream
1. 입력 스트림 생성
FileInputStream fis = new FileInputStream("src/io24/node/Keyboard.txt")
2.출력 스트림 생성
2-1 모니터
outputStream out = system.out;
2-3 파일
FileOutputStream fos = FileOutputStream("src/io24/node/KeyboardCopy.txt")
3. 출력
fis로 읽고 out과 fos로 출력
int data ;
while ((data = fis.read()) != -1){
3-1 모니터출력
out.write(data);
out.flush();
3-2 파일출력
fos.write(data);
fos.flush();
}
fos.close();
fis.close();
++ImageToImage
[이미지 카피] == 이미지 파일같은거도 가져올 수 있댕
데이타 소스:파일
노드 스트림:FileInputStream
데이타 목적지:파일
노드 스트림:FileOutputStream
※이미지 파일 처럼 바이너리 파일 (jpeg,gif,bmp,avi,mpeg,zip,dll,exe파일등)
을 복사할때는 바이트 기반의 노드 스트림인 FileInputStream/FileOutputStream을 사용한다.
단, Text파일등을 복사할때는 문자 기반의 노드 스트림인 FileReader/FileWriter사용하는게 유리
1. 입출력 스트림 객체선언 **
FileInputStream fis = null;
FileOutputStream fos = null;
try{
2. 입력 스트림 생성
fis = new fileInputStream("src/io24/node/이질화.bmp");
3. 출력 스트림 생성
fos = new FileOutputStream("src/io24/node/이질화Copy.bmp");
4. fis로 읽고 fos로 출력
int data;
long startTime = System.currentTimeMillis(); =>현재시간 출력 메소드
5.필터효과 적용해봅니다
byte [ ] b = new byte[1024];
while((data = fis.read(b))!= -1){
fos.write(b,0,data);
fos.flush();
}
long endTime = System.currentTimeMillis();
System.out.println("이미지 복사 소요시간:"+(endTime-startTime)/1000.0+"초");
}
}
catch(FileNotFoundException e){
System.out.println("파일이 존재하지 않아요");
}
catch(IOException e) {
System.out.println("파일 읽기시 오류");
}
finally {
try {
if(fis !=null) fis.close();
}
catch(IOException e) {
System.out.println("스트림 닫기시 오류");
}
}
'학원 > JAVA' 카테고리의 다른 글
10/12 19-7 +브리지 스트림 이용 (0) | 2022.10.12 |
---|---|
10/12 19-6 +필터 스트림 이용 (0) | 2022.10.12 |
10/12 19-4 키보드로 입력 받는 경우 (0) | 2022.10.12 |
10/12 19-3 io 들어가기 (0) | 2022.10.12 |
10/12 19-2 MethodSyncClass(메소드 동기화) (0) | 2022.10.12 |