TIL - 20250708

juni·2025년 7월 8일

TIL

목록 보기
59/316

학습 정리 (0708)

✅ 1. 파일 입출력 (File I/O)

📌 파일과 디렉토리 다루기

  • File 클래스를 사용하여 디렉토리 생성, 파일 존재 확인 등을 수행할 수 있음
File dir = new File("C:/example");
if (!dir.exists()) {
    dir.mkdir();
}

✅ 2. 바이트 기반 스트림

  • 1바이트 단위 입출력, 이미지, 영상 등 바이너리 파일 처리에 적합
  • 주요 클래스: FileInputStream, FileOutputStream

📅 출력 (write)

FileOutputStream fos = new FileOutputStream("file.txt");
fos.write(new byte[] {97, 98, 99}); // "abc"
fos.close();

📄 입력 (read)

FileInputStream fis = new FileInputStream("file.txt");
int data;
while ((data = fis.read()) != -1) {
    System.out.write(data);
}
fis.close();

✅ 3. 문자 기반 스트림

  • 2바이트 단위 입출력, 텍스트 파일 처리에 적합
  • 주요 클래스: FileReader, FileWriter, BufferedReader

📅 출력

FileWriter fw = new FileWriter("file.txt");
fw.write("안녕하세요!");
fw.close();

📄 입력

BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
br.close();

✅ 4. 객체 직렬화 & 역직렬화

  • 객체를 저장하려면 Serializable 인터페이스 필요

📅 저장 (ObjectOutputStream)

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("data.sav"));
oos.writeObject(myObject);
oos.close();

📄 로드 (ObjectInputStream)

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("data.sav"));
MyObject myObject = (MyObject) ois.readObject();
ois.close();

✅ 5. 람다식

& 함수형 인터페이스

📌 함수형 인터페이스

  • 추사 메서드 1개만 가지는 인터페이스
  • @FunctionalInterface 애니테이션 권장
@FunctionalInterface
interface Pet {
    void eat();
}

🌟 람다식

사용

Pet dog = () -> System.out.println("사로를 먹어요~");
dog.eat();

♦️ 람다식

활용 - 필터링

List<Integer> evens = filter(numbers, n -> n % 2 == 0);
List<Apple> redHeavy = filter(apples, a -> a.getColor().equals("red") && a.getWeight() > 100);

✅ 요약 정리

분류설명
바이트 스트림1바이트 입출력, 파일/이미지 처리
문자 스트림2바이트 텍스트 처리
직렬화/역직렬화객체를 파일로 저장/복원
함수형 인터페이스람다식
활용 가능

| 람다식
| 간각한 규칙 구성, 컨서스 설정/조건에 유용 |

0개의 댓글