버퍼를 가지고 순차적으로 이루어지는 입출력
응용 프로그램과 입출력 장치를 연결하는 소프퉤어 모듈
- 입력 스트림 : 입력 장치로부터 자바 프로그램으로 데이터 전달
- 출력 스트림 :출력 장치로 데이터 출력
문자 스트림
- 입출력되는 데이터를 단순 바이트로 처리
- 예) 바이너리 파일을 읽는 입력 스트림
- 문자만 입출력하는 스트림
- 문자가 아닌 바이너리 데이터는 스트림에서 처리하지 못함
- 예)텍스트파일을읽는입력스트림
FileReader fin = new FileReader("txt 주소"); // 파일 열고 파일과 입력 바이트 스트림 객체 fin 연결
int c;
while((c = fin.read() != -1 )) // 파일의 끝까지 바이트씩 c에 읽어 들인다. 파일의 끝을 만나면 read()는 -1리턴
{
System.out.print((char)c); // 바이트 C를 문자로 변환하여 화면에 출력
}
fin.close(); // 스트림 닫기, 파일도 닫힘 => 스트림과 파일의 연결을 끊으로서 더이상 스트림으로부터 읽을 수 없음
FileInputStream fin = new FileInputStream("c:\\Temp\\hangul.txt");
InputStreamReader in = new InputStreamReader(fin, "MS949"); // MS949 : 한글 완성형 확장형 문자 집합
while ((c = in.read()) != -1) {
System.out.print((char)c);
}
FileWriter fout = new FileWriter("c:\\Temp\\test.txt"); // txt로의 문자 출력 스트림 생성
// 파일 쓰기
// 문자 단위 쓰기
fout.write(‘A’); // 문자 ‘A’ 쓰기
fout.close();
// 블록 단위 쓰기
char [] buf new char[1024];
// buf[] 배열의 처음부터 배열 크기(1024개 문자)만큼 쓰기
fout.write(buf, 0, buf.length);
바이트 스트림
바이트 스트림 클래스
버퍼 스트림
버퍼 입출력의 목적
바이트 버퍼 스트림
문자 버퍼 스트림
// 파일 객체 생성
File f = new File("c:\\windows\\system.ini");
// 파일의 경로명
String filename = f.getName(); // "system.ini"
String path = f.getPath(); // "c:\\windows\\system.ini"
String parent = f.getParent(); // "c:\\windows"
// 파일인지 디렉터리인지 구분
if(f.isFile()) // 파일인 경우
System.out.println(f.getPath() + "는 파일입니다.");
else if(f.isDirectory()) // 디렉터리인 경우
System.out.println(f.getPath() + "는 디렉터리입니다.");
// 서브 디렉터리 리스트 얻기
File f = new File("c:\\Temp");
File[] subfiles = f.listFiles(); // c:\Temp 파일 및 서브디렉터리 리스트 얻기
for(int i=0; i<filenames.length; i++) {
System.out.print(subfiles[i].getName()); // 파일명 출력
System.out.println("\t파일 크기: " + subfiles[i].length()); // 크기 출력
}
}