728x90
저번 게시글에 이어서, 오늘은 자바의 thread를 사용해서 사용자가 작성한 일기가 3초마다 디렉토리에 저장되도록 해보겠습니다.
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DiaryApp {
// 일기를 저장할 디렉토리 경로 (코드를 실행하면, 이 프로젝트에 diaries 디렉토리가 자동으로 생성됩니다.)
private static final String DIARY_DIRECTORY = "./diaries/";
// 메인 메서드
public static void main(String[] args) throws IOException {
showMenu();
}
// 메인 메뉴를 표시하는 메서드
public static void showMenu() throws IOException {
// 메뉴 출력
System.out.println("\n\n\n=== 일기장 애플리케이션 ===");
System.out.println("1. 일기 작성");
System.out.println("2. 일기 읽기");
System.out.println("3. 일기 목록 보기");
System.out.println("4. 종료");
System.out.print("선택: ");
// 사용자 입력 처리
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int choice = Integer.parseInt(reader.readLine());
switch (choice) {
case 1:
writeDiary();
break;
case 2:
readDiary();
break;
case 3:
listDiaries();
break;
case 4:
System.out.println(" >> 애플리케이션을 종료합니다.");
return;
default:
System.out.println(" >> 잘못된 선택입니다.");
showMenu();
}
}
// 일기 목록 출력 메서드
public static void listDiaries() throws IOException {
// 일기 디렉토리 내의 파일 목록
File directory = new File(DIARY_DIRECTORY);
File[] files = directory.listFiles();
// 일기 목록 출력
if (files == null || files.length == 0) {
System.out.println(" >> 저장된 일기가 없습니다.");
showMenu();
return;
}
System.out.println("=== 일기 목록 ===");
for (File file : files) {
System.out.println(" * "+file.getName().replace(".txt", ""));
}
showMenu();
}
// 일기 작성 메서드
public static void writeDiary() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// 현재 날짜
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = sdf.format(new Date());
// 사용자 입력 받기
System.out.println("=== " + currentDate + " 일기 작성 ===");
System.out.println("일기 내용을 입력하세요. (입력을 종료하려면 'END'를 입력하세요)");
// 일기 내용 작성
StringBuilder content = new StringBuilder();
while (true) {
String line = reader.readLine();
if ("END".equalsIgnoreCase(line)) {
break;
}
content.append(line).append("\n");
}
// 파일 저장 부분
File diaryDir = new File(DIARY_DIRECTORY);
if (!diaryDir.exists()) {
diaryDir.mkdir(); // 디렉토리가 없다면 생성함
}
// 파일 작성
try (FileWriter writer = new FileWriter(DIARY_DIRECTORY + currentDate + ".txt")) {
writer.write(content.toString());
System.out.println(" >> 일기 저장 완료!");
}
showMenu();
}
// 일기 읽기 메서드
public static void readDiary() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("읽고 싶은 일기의 날짜 (예: 2023-10-19)를 입력하세요: ");
String date = reader.readLine();
// 해당 날짜의 일기 파일 불러오기
File diary = new File(DIARY_DIRECTORY + date + ".txt");
if (!diary.exists()) {
System.out.println(" >> 해당 날짜의 일기가 존재하지 않습니다.");
showMenu();
return;
}
// 해당 일기 출력
System.out.println("=== " + date + " 일기 ===");
try (BufferedReader diaryReader = new BufferedReader(new FileReader(diary))) {
String line;
while ((line = diaryReader.readLine()) != null) {
System.out.println(line);
}
}
showMenu();
}
}
'Java' 카테고리의 다른 글
[Java] Swing을 활용해 간단한 알람 만들기 (0) | 2023.12.23 |
---|---|
[Java] Java Swing으로 회원가입 & 로그인 프로그램 만들기(2) (0) | 2023.12.14 |
[Java] Java Swing으로 회원가입 & 로그인 프로그램 만들기(1) (0) | 2023.12.08 |
[JAVA] 일기장 관리 프로그램 만들기 (0) | 2023.12.07 |
[JAVA] Jdatepicker 사용해 캘린더 생성하고 날짜 선택하기 (0) | 2023.11.24 |