java.io.File 클래스
- 파일, 디렉터리(폴더)를 관리하는 클래스
- 파일, 디렉터리를 생성/삭제가 가능
- 파일, 디렉터리의 각종 정보(이름, 크기, 최종수정일 등)를 확인할 수 있음
경로 작성 방법
- 윈도우 : 백슬래시(), Java에서 백슬래시 입력하는 방법(\)
- 리눅스 : 슬래시(/)
- java.io.File 클래스에는 플랫폼에 따라서 경로 구분자를 자동으로 바꿔주는 separator 필드 값이 있음
public static void ex01() {
File dir;
dir = new File("C:/storage");
if (dir.exists()) {
dir.delete();
System.out.println("C:\\storage 디렉터리 삭제 완료");
} else {
dir.mkdirs();
System.out.println("C:\\storage 디렉터리 생성 완료");
}
}
파일, 디렉터리 정보 확인
- listFiles() : 모든 File 객체를 저장한 File 반환
- getName() : 이름 반환
- getParent() : 저장된 디렉터리 반환
- getPath() : getParent() + getName()
- lastModified : 최종수정일을 long 타입으로 반환
- length() : 크기를 long 타입의 바이트 단위로 반환
- isDirectory() : 디렉터리면 true 반환
- isFile() : 파일이면 true 반환
package ex04_Library;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
public class Library {
private List<Book> books;
private Scanner sc;
public Library() {
books = new ArrayList<Book>();
sc = new Scanner(System.in);
}
private void addBook() throws InputMismatchException {
System.out.println("====등록====");
System.out.println("책 제목 입력");
String title = sc.next();
System.out.println("책 가격 입력");
int price = sc.nextInt();
books.add(new Book(title, price));
System.out.println(title + " 책이 등록되었습니다.");
}
private void deleteBook() throws RuntimeException {
System.out.println("====삭제====");
if (books.isEmpty()) {
throw new RuntimeException("도서관에 등록된 책이 없습니다");
}
System.out.println("삭제할 책의 제목 입력 >>>");
String title = sc.next();
if (title.isEmpty()) {
throw new RuntimeException("삭제할 책의 제목이 입력되지 않았습니다");
}
for (Book book : books) {
if (title.equals(book.getTitle())) {
books.remove(book);
System.out.println(book + "책이 삭제되었습니다.");
return;
}
}
System.out.println(title + " 제목을 가진 책이 없습니다.");
}
private void modifyBook() throws RuntimeException, InputMismatchException {
System.out.println("====수정====");
if (books.isEmpty()) {
throw new RuntimeException("도서관에 등록된 책이 없습니다");
}
System.out.println("수정할 책의 제목 입력 >>>");
String title = sc.next();
if (title.isEmpty()) {
throw new RuntimeException("수정할 책의 제목이 입력되지 않았습니다");
}
for (Book book : books) {
if (title.equals(book.getTitle())) {
System.out.println("수정할 가격을 입력하세요. 현재가: " + book.getPrice() + "원");
int price = sc.nextInt();
book.setPrice(price);
System.out.println(title + "책의 가격이 " + price + "원으로 수정되었습니다.");
return;
}
}
System.out.println(title + " 제목을 가진 책이 없습니다.");
}
private void queryBook() throws RuntimeException {
System.out.println("====조회====");
if (books.isEmpty()) {
throw new RuntimeException("도서관에 등록된 책이 없습니다");
}
System.out.println("조회할 책의 제목 입력 >>>");
String title = sc.next();
if (title.isEmpty()) {
throw new RuntimeException("조회할 책의 제목이 입력되지 않았습니다");
}
for (Book book : books) {
if (title.equals(book.getTitle())) {
System.out.println("제목: " + book.getTitle() + " 가격: " + book.getPrice() + "원");
return;
}
}
System.out.println(title + " 제목을 가진 책이 없습니다.");
}
private void queryAllBook() throws RuntimeException {
System.out.println("====전체조회====");
int size = books.size();
System.out.println("전체 보유 도서 수: " + size + "권");
if (books.isEmpty()) {
throw new RuntimeException("도서관에 등록된 책이 없습니다");
}
for (int i = 0; i < size; i++) {
System.out.println((i + 1) + "번째 도서: " + books.get(i));
}
}
public void manage() {
while (true) {
try {
System.out.println("1.등록 2.삭제 3.수정 4.조회 5.전체조회 0.종료");
String choice = sc.next();
switch (choice) {
case "1":
addBook();
break;
case "2":
deleteBook();
break;
case "3":
modifyBook();
break;
case "4":
queryBook();
break;
case "5":
queryAllBook();
break;
case "0":
System.out.println("도서관리프로그램을 종료합니다");
return;
default:
System.out.println("잘못된 입력입니다. 다시 시도하세요");
break;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}