Part22 - io

uglyduck.dev·2020년 9월 27일
0

예제로 알아보기 👀

목록 보기
22/22
post-thumbnail
post-custom-banner
입출력 스트림 (IO Stream)
	
    1. 데이터를 전송하기 위한 일종의 통로 개념이다.
    2. 일방통행이 기본이다.
    3. 입력 스트림과 출력 스트림으로 구분한다.
    4. 바이트 기반 스트림과 문자 기반 스트림으로 구분한다.
    5. 바이트 기반 스트림
        1) InputStream : 입력 스트림
            (1) FileInputStream
            (2) PipedInputStream
        2) OutputStream : 출력 스트림
            (1) FileOutputStream
            (2) PipedOutputStream
    6. 문자 기반 스트림
        1) Reader : 입력 스트림
            (1) FileInputReader
            (2) PipedInputReader
        2) Writer : 출력 스트림
            (1) FileWriter
            (2) PipedWriter
    7. 보조 스트림
        1) BufferedInputStream : 버퍼를 통해서 입력
        2) BufferedOutputStream : 버퍼를 통해서 출력			

Ex01_FileOutput

package com.mywork.ex;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ex01_FileOutput {

	public static void main(String[] args){
		
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		
		try {
			fos = new FileOutputStream("alphabet.txt");
			bos = new BufferedOutputStream(fos);
			char ch = 'A';
			while(true) {
				bos.write(ch);
				if(ch == 'z') break;
				ch++;	// 다음 문자(코드표 상으로)
			}
			System.out.println("alphabet.txt 파일 생성");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if(bos!= null) bos.close();
				if(fos!= null) fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		
	}

}

Ex02_FileInput

package com.mywork.ex;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;

public class Ex02_FileInput {

	public static void main(String[] args) {
		
		 FileInputStream fis= null;
		 BufferedInputStream bis= null;
		 
		 try {
			fis = new FileInputStream("alphabet.txt");
			bis = new BufferedInputStream(fis);
			int ch = 0;        // ※ char ch; 가 아님을 주의할 것!
			
			while(true) {
				ch = bis.read();  // read() 메소드의 리턴이 int type 이다!
			                      // read() 메소드는 파일이 끝나면 -1을 리턴
				if(ch == -1) break;
				System.out.print((char)ch);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if(bis != null) bis.close();
				if(fis != null) fis.close();
			}catch(IOException e) {
				e.printStackTrace();
			}
		}
		 
	}

}

Ex03_FileCopy

package com.mywork.ex;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ex03_FileCopy {

	public static void main(String[] args) throws IOException{
		
		// 원본 소스 파일은 "읽어"들인다.
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream("alphabet.txt"));
		
		// 복사본 파일은 "생성"한다.
		FileOutputStream fos = new FileOutputStream("alphabet2.txt");
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		
//		int data = bis.read();	// read() 가 -1일때 끝
		int data;
		while( (data = bis.read()) != -1) {
			bos.write(data);
		} 
		bis.close();
		bos.close();
		fos.close();	// 불필요
	}

}

Ex04_File

package com.mywork.ex;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ex04_File {

	public static void main(String[] args) {
		
		File file = null;		// File 클래스를 추가하면 파일 관련 메소드를 사용할 수 있다.
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		
		try {
			file = new File("myFile.txt");
			fos = new FileOutputStream(file);
			bos = new BufferedOutputStream(fos);
			
			char ch = 'a';
			while(true) {
				bos.write(ch);
				if(ch == 'z') break;
				ch++;
			}
			
			// File 클래스 사용으로 사용이 가능한 메소드
			System.out.println("파일명 : " + file.getName());
			System.out.println("경로1 : " + file.getAbsolutePath());
			System.out.println("경로1 : " + file.getPath());
			if(file.exists()) {
				System.out.println("파일이 있습니다.");
//				file.delete();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if(bos != null) bos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		
	}

}
profile
시행착오, 문제해결 그 어디 즈음에.
post-custom-banner

0개의 댓글