전체 글

노력하는 코딩 농부
시나리오 코드 1 Seoul.txt, NewYork.txt 파일 생성하고 내용을 넣어 주세요.기반 스트림 FileReader → 단 인코딩에 대한 단점이 존재한다.package Io.file.ch05;import java.io.BufferedReader;import java.io.FileReader;import java.util.Scanner;public class CityInfoApp1 { public static void main(String[] args) { System.out.println("도시 이름을 입력하세요. (예 : Seoul, NewYork)"); try (Scanner scanner = new Scanner(System.in)) { String city = scanner.nex..
💡 자바 I/O에서 문자 기반 스트림의 사용 이유       자바의 입출력(I/O) 시스템은 크게 두 가지 유형의 스트림을 제공합니다.      바이트 기반 스트림과 문자 기반 스트림. 문자 기반 스트림은 텍스트 데이터(문자 데이터)를 처리할 때 사용됩니다. 문자 인코딩 처리: 문자 기반 스트림은 자동으로 플랫폼의 기본 문자 인코딩을 사용하여 문자 데이터를 올바르게 인코딩하거나 디코딩합니다. 이는 다양한 문자 인코딩을 처리하면서 발생할 수 있는 복잡성을 추상화하고, 개발자가 문자 데이터를 쉽게 처리할 수 있도록 돕습니다.국제화 지원: 유니코드와 같은 다국어 지원을 통해 전 세계적으로 소프트웨어를 배포할 때 필수적입니다. 문자 기반 스트림을 사용하면 다양한 언어의 문자 처리가 간편해집니다.가독성 및 편의..
💡 학습 목표 바이트 단위에 기반스트림 파일 입력,출력 스트림을 함께 사용해 보자.  시나리오 코드 1 - 기반 스트림인 파일 입력,출력 스트림을 사용 package Io.file.ch03;import java.io.FileInputStream;import java.io.FileOutputStream;public class FileCopy { public static void main(String[] args) { // 스트림은 기본적으로 단방향이다. // 이는 한 방향으로 데이터를 흘려보낼 수 있음이다. ↓ // 입력 스트림, 출력 스트림 두개가 필요하다. // 파일 경로 (복사할 대상) String sourceFilePath = "C:\\Users\\KDP\\Documents\\Lights..
💡 바이트 기반에 출력 스트림을 활용해서 파일 생성 또는 파일에 데이터를 출력해보자. 시나리오 코드 1package Io.file.ch02;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class MyFileOutputStream { // 코드의 시작점 public static void main(String[] args) { // 시간 측정 나노 초 = 10억 분의 1초 long start = System.nanoTime(); // 데이터가 존재 String data = "Hello, Java FileOUTputStream \n안녕 반가워"; // 1...
💡 바이트 기반에 입력 스트림을 활용해서 파일에 있는 데이터를 읽어 보자. package Io.file.ch01;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class MyFileInputStream { public static void main(String[] args) { // 외부에 있는 파일 데이터를 읽을려면 input // 스트림이라는 도구를 준비함 FileInputStream in = null; // 대상 경로를 지정 예외지정 try { in = new FileInputStream("a.txt"); // 예외처리를 따로따로 ..
자바에서 표준 입출력(Standard Input/Output)은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공합니다.  표준 입출력의 핵심 요소 System.inSystem.in 은 자바 프로그램의 표준 입력 스트림입니다. 기본적으로 이 스트림은 키보드 입력을 받습니다. 이는 InputStream 객체로, 바이트 기반의 낮은 수준의 입력 기능을 제공합니다. 일반적으로, 사용자로부터 텍스트를 읽기 위해 Scanner 클래스나 **BufferedReader**와 같은 더 높은 수준의 래퍼(wrapper)를 사용하여 쉽게 데이터를 처리할 수 있습니다.System.outSystem.out 은 자바 프로그램의 표준 출력 스트림으로, 텍스트 데이터를 콘솔에 출력합니다. 이 스트림은 PrintStream ..
사전 기반 지식💡 Stream 이라는 단어에 대해서 먼저 살펴 보자.   스트림(Stream)은 데이터를 순차적으로 처리하는 일련의 연속된 데이터 요소들입니다. 자바에서 스트림은 데이터의 흐름을       읽고 쓰는 데 사용되는 추상적인 개념으로, 입출력 작업을 수행할 때 데이터를 한 곳에서 다른 곳으로 이동시키는 매개체 역할     을 합니다. java.io 패키지💡 자바 I/O의 스트림 API에는 실제로 여러 인터페이스와 추상 클래스가 정의되어 있습니다. 주의!자바에서 "스트림"이라는 용어는 두 가지 맥락에서 사용됩니다. 하나는 I/O에 관련된 데이터 흐름을 처리하는 스트림이며, 또 다른 하나는 자바 8 이후에 도입된 java.util.steram 패키지에 포함된 스트림 API입니다. 스트림1. ..
💡 학습 목표내부 클래스란? (inner class)내부 클래스의 종류 1. 내부 클래스란? (inner class)자바에서 내부 클래스(Inner Class)는 한 클래스 내부에 선언된 클래스를 말합니다. 내부 클래스를 선언하게 되면 내부 클래스와 외부 클래스라고 표현할 수 있습니다. 내부 클래스는 보통 외부 클래스와 연관이 있는 경우가 많고 다른 곳에서 거의 사용할 일이 없는 경우에 내부 클래스를 선언해서 활용을 합니다. class OuterClass { private int num = 10; class InnerClass { public void display() { System.out.println("num: " + num); } ..
💡 학습 목표스레드 동기화 이해: synchronized 블록을 사용하여 여러 스레드가 공유 자원에 동시에 액세스하지 않도록 관리합니다. 이는 데이터 일관성과 스레드 안전을 유지하는 핵심 개념입니다.wait()와 notify() 메소드의 사용: 이 두 메소드를 사용하여 스레드 간의 통신을 구현합니다. wait()를 호출하는 스레드는 특정 조건이 충족될 때까지 대기하고, notify()를 사용하여 조건 충족 시 다른 스레드를 깨워 작업을 계속하도록 합니다.프로듀서-컨슈머 패턴: 이 패턴은 멀티스레딩 디자인에서 흔히 사용되는 패턴으로, 한 스레드(프로듀서)가 데이터를 생성하고 다른 스레드(컨슈머)가 이를 소비합니다.  프로듀서와 컨슈머 패턴으로 코딩해보기  package basic.useful.ch06;i..
Map은 키(key)와 값(value)을 연관시키는 자료구조입니다. 이는 사전과 유사한 구조로, 각 키는 고유한 값을 가집니다. Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러 가지 클래스가 있습니다. Map 주요 특징 키-값 저장: Map은 키(key)와 값(value)의 쌍으로 데이터를 저장합니다. 각 키는 고유해야 하며, 하나의 값에만 매핑됩니다.중복 키 불가: Map은 각 키가 고유해야 합니다. 따라서 동일한 키를 두 번 이상 추가할 수 없습니다. 키의 유일성은 Map 내에서 보장됩니다.순서 보장하지 않음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않습니다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있습니다. Map 주요 기능 및 메..
CNOW
코린이의 전원일기