Input과 Output의 약자
컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는 것
장치와 입출력을 위해서는 하드웨어 장치에 직접 접근이 필요한데,
다양한 매체에 존재하는 데이터들을 사용하기 위해
입출력 데이터를 처리할 공통적인 방법으로 스트림 이용
Input(입력) : 외부에서 내부로 값이 들어오는 것
Output(출력) : 내부에서 외부로 값이 나가는 것
파일 시스템의 파일을 표현하는 클래스
파일 크기, 파일 속성, 파일 이름 등의 정보와 파일 생성 및 삭제 기능 제공
입출력 장치에서 데이터를 읽고 쓰기 위해서 자바에서 제공하는 클래스
모든 스트임은 단반향이며, 각각의 장치마다 연결할 수 있는 스트림 존재
하나의 스트림으로 입출력을 동시에 수행할 수 없으므로 동시에 수행하려면 2개의 스트림 필요
3-1) 바이트 기반 스트림 : 1byte 만 지나갈 수 있음(한글을 내보낼 수 없음)
FileOutputStream fos = null; FileInputStream fis = null;
스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용
보고 스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에 입출력 처리 불가능
기반 스트림을 먼저 생성한 후 이를 이용하여 보조 스트림 생성
BufferedOutputStream bos = null; bos = new BufferedOutputStream(fos);
BufferedInputSteream bis = null; bis = new BufferedInputStream(fis);
System.nanoTime();
1970.01.01 09:00:00 부터 현재 시간까지의 차이를 ns(nano second)로 반환
1ms = 1/1000s
1us = 1/1000ms
1ns = 1/1000us
-> 수행 전과 후 시간을 입력 받아 두 시간의 차이를 통해 수행 시간을 계산
long startTime = System.nanoTime(); fos.write(content.getBytes()); long endTime = System.nanoTime(); System.out.prtinln("[수행 시간] : " + (endTime - startTime) + "ns");
1) 입력된 경로에 파일이 있는지 검사
2) 있으면 파일 내용을 모두 읽어오기 : FileInputStream + BufferedInputStream
3) 읽어온 내용을 같은 경로 위치에 "파일명_복사본" 이름으로 출력
public void fileCopy(){ BufferedReader br = null; FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStreasm fos = null; BufferedOutputStream bos = null; try{ br = new Buffered(new InputStreamReader(System.in); System.out.print("파일 경로 입력 : "); String target = br.readLine(); File file = new File(target); if(!file.exists()){ System.out.println("[해당 경로에 파일이 존재하지 않습니다.]"); return; } fis = new FileInputStream(target); bis = new BufferedInputStream(fis); byte[] bytes = bis.readAllBytes(); StringBuilder sb = new StringBuilder(); sb.append(target); int insertPoint = target.lastIndexOf("."); sb.insert(insertPoint, "_복사본"); String copy = sb.toString(); fos = new FileOutputStream(copy); bos = new BufferedOutputStream(fos); bos.write(bytes); bos.flush(); System.out.prinln("복사 완료 : " + copy); }catch (Exception e){ e.printStackTrace(); }finally{ try{ if(br != null) br.close(); if(bis != null) bis.close(); if(bos != null) bos.close(); }catch (Excetpion e){ e.printStackTrace(); } } }