본문 바로가기
수업시간 JAVA/이론

복습 파일 Input친구들

by SEOKIHOUSE 2023. 5. 2.

1) InputStream  --1바이트씩읽기

package practice0502Input;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class InputStreamTest {

	public static void main(String[] args) {
		// 키보드를 입력스트림 객체에 할당한당
		InputStream is = System.in; // 빨대꽂았다
		InputStreamReader isr = new InputStreamReader(is); // 얘도 빨대 -2바이트를읽음
		int inputData = 0;

		System.out.print("데이터 입력하세요");

		// InputStream이 제공하는 read()메소드는 1바이트(영문1개)를 읽고 해당
		// 문자의 정수 코드값을 반환한다

		try {
//			inputData =is.read();
			inputData = isr.read(); // 2바이트로 읽음
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 바로 출력하면 정수 코드값이 출력되고 문자로 캐스팅하면 문자가 출력됨
		System.out.println("실제 입력된 데이터(정수) : " + inputData);
		System.out.println("실제 입력된 데이터(문자) : " + (char) inputData);
	}

}


 

2) InputStreamReader - 2바이트씩 읽기(한글가능)


배열만들어서 글자읽기

package practice0502Input;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class InputStreamReaderTest {

	public static void main(String[] args) {
		InputStream is = System.in;
		InputStreamReader isr = new InputStreamReader(is);
		int inputData = 0;
		
		//10개의 문자를 보관할 수 있는 배열객체 생성
		char[] temp = new char[10];
		System.out.print("데이터 입력");
		
		//inputstreamreader의 read메소드의 인수가 배열이면
		//배열크기만큼 배열에 문자를 읽은 후 읽은 문자의 수를 반환
		try {
			inputData =isr.read(temp);
		}catch(IOException e ) {
			e.printStackTrace();
		}
		for(int i =0; i<inputData; i++) {
			System.out.print(temp[i]);
		}
	}

}


3)FileInputStream

package practice0502Input;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest {

	public static void main(String[] args) throws IOException {
		int inputData = 0;
		// FileInputStream 객체선언
		FileInputStream fis;
		
		try {
			//실제 파일과 연결된 FileInputStream 객체생성
			fis = new FileInputStream("sample.txt");
			//실제파일에서 1바이트씩 데이터를 읽어 정수코드값을 반환
			//정수 값을 문자형으로 캐스팅하여 출력한다
			//데이터를 모두 읽으면 -1반환
			while((inputData = fis.read()) != -1) {
				System.out.print((char)inputData);
			}
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}

}

한글은 깨져서 못읽는대


4)FileReader

package practice0502Input;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class FileReaderTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("파일명입력");
		String s = sc.next();

		FileReader fr = null;
		int inputData = 0;

		try {
			fr = new FileReader(s+".txt");
			// 실제 파일에서 2바이트씩 데이트를 읽어 정수코드값을 반환
			// 정수값을 문자형으로 캐스팅하여 출력
			// 데이터를 모두 읽으면 -1반환
			try {
				while ((inputData = fr.read()) != -1) {
					System.out.print((char) inputData);
				}
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

}

 


5)BufferedInputStream

package practice0502Input;

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

public class BufferedInputStreamTest {

	public static void main(String[] args) {
		int inputData = 0;
		try {
			FileInputStream fis = new FileInputStream("sample.txt");
			//FileInputStream 객체를 인수로 BufferedInputStream객체를 생성
			BufferedInputStream bis = new BufferedInputStream(fis);
			//보조스트림 ->버퍼(임시저장소 사용)에 담아두고
			//버퍼에서 1바이트씩 읽어들인다
			while((inputData = bis.read()) != -1) {
				System.out.print((char)inputData);
			}
			bis.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}

}


6)BufferedReader

readLine 쓰고 못읽을떈 null로

package practice0502Input;

import java.io.BufferedReader;
import java.io.FileReader;

public class BufferedReaderTest {

	public static void main(String[] args) {
		String inputData = null;
		
		try {
			FileReader fr = new FileReader("sample.txt");
			BufferedReader br = new BufferedReader(fr);
			//readLine메소드로 라인단위로 읽어들인다
			while((inputData = br.readLine()) != null ) {
				System.out.println(inputData);
			}
		}catch(Exception e) {
			
		}
	}

}

'수업시간 JAVA > 이론' 카테고리의 다른 글

InetAddress/URL/ServerSocket  (0) 2023.05.02
복습 파일 output친구들  (0) 2023.05.02
Map  (0) 2023.04.26
제네릭  (0) 2023.04.18
PreparedStatement  (0) 2023.04.13