728x90
반응형

InputStreamReader으로 사용자 입력값 받기

public class IOTest {

	public static void main(String[] args) {
		//사용자 입력값 (1byte)
		new IOTest().InputStreamReader_1();
		new IOTest().InputStreamReader_2();
	}
	
	//사용자 입력값 받기(문자)
	public void InputStreamReader_1() {
		String input = "";
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //보조스트림 끼움
		
		System.out.print("입력 : ");
		try {
			
			while((input=br.readLine()) != null) {
				if("exit".contentEquals(input)) break;
				System.out.println(input);
			}
			
		}catch(IOException e) {
			e.printStackTrace();
		}
		
		System.out.println("====사용자 입력 끝====");
	}
    	
	//사용자 입력값 받기(숫자)
	public void InputStreamReader_2() {
		String input = "";
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  //보조스트림 끼움
		
		System.out.print("정수 입력 : ");
		int sum = 0;
		
		try {
			
			while((input=br.readLine()) != null) {
				
				if("exit".contentEquals(input)) break;
				sum += Integer.parseInt(input);
				System.out.println(sum);
			}
		}catch(IOException e) {
			e.printStackTrace();
		}
		System.out.println("====사용자 입력 끝====");
	}
}

 

 

InputStream/OutputStream (1바이트 기반 스트림)

public class IOTest {

	public static void main(String[] args) {
		new IOTest().FileIOStream();
		new IOTest().URLFileIOStream();
		new IOTest().ObjectOutputStream();
		new IOTest().ObjectInputStream();
	}

	
	//컴퓨터 내 파일 읽고 쓰기
	public void FileIOStream() {
		
		try(BufferedInputStream bis = new BufferedInputStream(new FileInputStream("src/abc.txt"));    		  //파일 읽기(컴퓨터내 파일)
			BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/abcCopy.txt"));) {  //파일 쓰기
			
			int input = 0;
			while((input =bis.read()) != -1) {
				System.out.print((char)input+"-");
				
				bos.write(input);		//파일 쓰기!
			}
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
    	
        
	//URL파일 읽고 쓰기
	public void URLFileIOStream() {
		String imageUrl = "https://pds.joins.com/news/component/htmlphoto_mmdata/201909/01/136ad58b-b410-4db8-939b-ec0b40b9d1f5.jpg";  //이미지 주소 복사
		URL url = null;
		URLConnection conn = null;
		
		try {
			url = new URL(imageUrl);
			conn = url.openConnection();
			try(BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/cat.jpg"))) {
				
				int data = 0;
				while((data = bis.read()) != -1) {
					bos.write(data);
				}
			}
			
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
    
    
	//파일 저장
	// ObjectInput/OutputStream을 통해
	// 객체를 기록/열람하려면, Serializable 인터페이스를 반드시 구현해야 함
	public void ObjectOutputStream() {
		Book bookArr[] = {
			new Book("어린왕자", "생택쥐페리"),
			new Book("연금술사", "파울로 코엘료"),
			new Book("나무", "베르나르 베르베르"),
			new Book("카스테라", "박민규"),
			new Book("주홍글씨", "나사니엘 호손")
		};
		
		try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("bookList.txt"));) {
			
			oos.writeObject(bookArr);
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("저장 완료!");
	}
      
      
	//파일 읽기
	public void ObjectInputStream() {
		Book[] bookList = new Book[10];
		
		try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("bookList.txt"))){
				
				bookList = (Book[])ois.readObject();
			
		}catch(ClassNotFoundException | IOException e) {
			e.printStackTrace();
		}
		
		for(int i=0; i<bookList.length; i++) {
			System.out.println(bookList[i]);
		}
		System.out.println("읽기 완료!");
	}
}

 

 

FileReader/FileWriter (2바이트 문자 기반)

public class IOTest {

	public static void main(String[] args) {
		new IOTest().FileRW();	
	}
	
	//파일 읽고 쓰기 (한글로 된 파일은 FileReader 사용해서 읽을 것!)
	public void FileRW() {
		try(BufferedReader br = new BufferedReader(new FileReader("bookList.txt"));
			BufferedWriter bw = new BufferedWriter(new FileWriter("bookListCopy.txt"));){
			
			String data = "";
			while((data = br.readLine()) != null) {
				System.out.println(data);
				
				bw.write(data);
			}
			
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
}

 

반응형
복사했습니다!