Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

붓, 그리다

입출력(스트림) 1 본문

JAVA/Basic

입출력(스트림) 1

붓그린 2017. 6. 16. 17:13

[ 스트림 ]
- 소스와 타겟사이의 데이터 전송을 위한 가상을 통로
-  Source : 데이터를 전송해주는 쪽
- Target : 데이터를 받는 쪽 

특징)
1) 쌍방향이 안됨, 단방향만 된다. -> 데이터 전송목적, 출력목적만으로 사용
2) 다단계 결합이 있다. -> 스트림은 여러개 결합이 가능(생성자로 연결)
3) 무한 대기가 존재한다. -> 입력받을 때까지 계속 대기하는 상태


- 데이터클래스 분류 : 전송해주는 데이터(문자, 이미지, 동영상,,)에 따라 분류

1. Byte 기반
- 이미지, 동영상, 영문자 전달 가능
- 입력스트림 : read(), close() 메서드를 사용
- 출력스트림 : write(), clase()
- FileInputStream : 외부에서 파일의 정보를 읽어오기
- FileOutputStream : 파일 저장 목적이 주
- FilterInputStream : 데이터 가공, bridge class(중간매개체)
- FilterOutputStream :
- BufferedInputStream : 대용량, 데이터를 읽어들일 때 빠르다.
- BufferedOutputStream 
- DataInputStream : 자바의 기본 자료형을 읽어 들일 때(byte,short,,,8가지 자료형)
- DataOutputStream

2. 문자(char) 기반
- 영어권 외 언어
- FileReader : 파일 읽어오기, 한글 위주
- FileWriter : 파일 저장, 한글 위주




- System.out : 표준출력장지(모니터)
- System.out.print(변수명) : 변수에 저장된 값을 확인, 있는 그대로 출력
- System.out.write(변수명) : 데이터의 값을 변환시켜서 출력, 아스키코드(숫자) 값을 문자로 변환해서 출력


[ 자바에서 예외처리를 해야하는 경우 ]

1) 선택적으로 예외처리를 하는 경우
: try~catch 구분
-> un-checked Exception

2) 필수로 예외처리를 하는 경우
: Checked Exception 클래스
-> 입출력, 네트워크 접속, DB접속할 때 무조건 예외처리
=> throws Exception 쓰면 편함
- 예외처리 구문을 쓰지 않으면 컴파일 상태 때 에러 발생
- unhandled Exception type IOException : 입출력프로그램을 작성할 때에는 반드시 예외처리를 하라는 경고메세지


package j0615;

import java.io.*; //자바의 입출력

//메모리에 데이터값을 저장하고 저장된 값을 모니터에 출력하기
public class WriteHello {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                byte hello[]= {72,101,108,108,111,32,87,111,114,108,100,33,10};
                byte a=72;
                // byte : 데이터 전송단위로 출력

                // System.out : 표준출력장치(모니터)
                try {
                        System.out.println(a);
                        System.out.println((char)a);
                        System.out.write(a); //write 메서드 이용 출력X -> 출력할 내용이 적으면 출력버퍼에 저장만 됨
                        System.out.write(hello); // 배열의 값을 출력할 때는 반드시 예외처리
                        }catch(IOException e) {
                                System.out.println(e);
                        }
        }

}








EX) 파일 읽어들이기 FileInputStream

package j0615;

import java.io.*;

public class FileInputTest {

        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                // FileInputStream
                FileInputStream fis=new FileInputStream("C:/3.java/readme.txt");
                int read=0; //파일을 읽어들여서 임시로 저장

                while(read!=-1) { //더이상 파일의 내용을 읽어들일 수 없을 때까지
                        read=fis.read();
                        System.out.write(read);
                }
        }

}


파일 경로명 또는 파일명이 틀렸을 경우 나타나는 에러메세지

Exception in thread "main" java.io.FileNotFoundException: C:\2.java\readme.txt (지정된 경로를 찾을 수 없습니다)




EX) 파일복사 : FileOutputStram

package j0615;

import java.io.*;

public class FileInputTest2 {

        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                // FileInputStream
                FileInputStream fis=new FileInputStream("C:/3.java/readme.txt");
                // 파일을 만들어서 출력 : FileOutputStream
                FileOutputStream fos=new FileOutputStream("C:/3.java/readme2.txt");
                int read=0; //파일을 읽어들여서 임시로 저장

                while(true) {
                        read=fis.read();
                        if(read==-1) break;
                        fos.write(read);
                }
        }

}












*
TextArea, TextField -> 입력 전송 할 때 setText(~)
내용을 가저올 때 getText(~)

 
입출력시 FileInputStram 
- read() : 단순히 읽어들이는 경우(파일의 내용을 직접)
- read(byte[] b) : 불러올 파일의 내용을 메모리에 저장시켜놓은 상태에서 문자열을 불러올 때 사용하는 메서드
- byte[] : 내용의 크기만큼 저장한다






- 다단계 결합 : 입력스크립이 한개 이상 연결된 상태(가공처리)
-> 내가 원하는 데이터만 불러오기 위해서


키보드로 한글로 된 데이터를 입력을 받아서 콘솔에 출력하는 프로그램
- System.in : 키보드 입력
- InputStreamReader : 한글이 깨지지 않도록 설정
- BufferedInputStream: 한꺼번에 많은 양의 데이터를 읽어들이기
=> Scanner 클래스가 세가지 역할을 대신 해 줌










'JAVA > Basic' 카테고리의 다른 글

입출력(직렬화)  (0) 2017.06.16
입출력(스트림) 2  (0) 2017.06.16
객체형변환, 라이브러리  (0) 2017.06.16
AWT를 Swing으로 전환시키는 방법  (0) 2017.06.16
화면 배치, 이벤트 처리  (0) 2017.06.16
Comments