Exception
RuntimeException
unchecked checked
try-catch가 있든 없든 실행시키겠다
-> 예외처리 구분이 있는지 없는지 체크
-> 자바에 의해서 발생한 예외는 알아서 던진다
-> try쪽에 던진다는 개념이 보이지 않음
-> 자바에 의해서 던져짐
-> 예외를 던질때는 new를 이용해서 예외객체를 만듦
(RuntimeExcpetion)
-> 미루겠다(메소드 호출하는 곳으로 미룬다)
본문에는 try catch 없음
-> str이없을때
-> null 이 되면 nullpointexception 발생 -> 다시 호출한 쪽으로 부름
-> 예외발생시 deleteboo, modifybook, querybook으로 던져주고 그 예외가 exception e로 가서 출력됨
삭제
책이 없을때 : 책이 한권도 없는데 지울 책이 없음
책을 저장했던 게 arraylist books 저장된 요소가 없을때 true를 반환
동일한 제목이면 삭제대상으로 함
-> 공백없이 입력받을 수 있는 next
입력된 title이 빈문자열인지 아닌지 확인
-> 비어있으면 (빈문자열이면) : isEmpty()
-> 상단에 throws하고 있어서 추가로 할 필요없음
입력된 title에 비어있다도 추가 추가로 공백만 했다(입력을 스페이스만 했다 -> 입력이 없는걸로 봐도 타당함)
(2가지 삭제 가능)
객체기반의 삭제 (동일한 객체를 찾아서 삭제)
-> 되어있음
title비교해서 같으면 같은책임
향상 for문
- 기존의 for문에 비해서 간단하게 사용할 수 있는 for문
- 배열이나 collectinon 자료형의 요소를 하나씩 순서대로 처리할 수 있는 for문
-일반 for문
arraylist 배열에 있는 books를 하나씩 비교하겠다
입력된 제목(title) 도서관에서 꺼내온 책(get title)
'for'문 : books 리스트에 있는 모든 책들을 순회하여 입력한 책과 일치하는 책의 제목과 일치하는 책을 찾기
'if'문 : 두개의 값을 비교함
인덱스 기반으로 지우는게 아니라 객체 기반으로 지우기 위해서 향상 for문 씀
동일한 책은 한권밖에 없으니까 동일한 책을 찾으면 더이상 진행할 필요 없이
deleteBook이라는 메소드 실행을 끝내겠음
값이 없는 return
-> 똑같은 책이 하나도 없을때 여기로 옴 (입력된 제목을 가진 책이 없을때)
for문 끝나고 다음줄로 옴
-> to string 만들어놔서 book이라고 단순 처리 가능
-> SCANNER쓰고 있어서 검사 확인이 안됨
실제 ) 웹화면으로 넘겼을때 빈문자처리가 가능해서
(실제에서는 동작이 가능해서)
-> throws뒤에 , (콤마)로 연결하면 됨
-> 정수 입력하지 않으면 예외 발생함
system.in system.out
file 대상으로 자바가 특정 파일의 내용을 읽을수도 있고 자바를 이용해서 특정파일을 만들 수도 있음
-> int단위로 읽을수도 있고 배열다누이로 좀 많이 읽을수있고, 라인단위로 읽을 수 있고..(읽어들이는 방법 : 여러개)
-> 파일로 원하는데이터를 보낸다.
화살표 : 스트림(stream)
입력 스트림 만들면 입력용으로만, 출력 스트림 만들면 출력용으로만 쓴다.
-> 파일 복사 프로그램도 짤 수 있음
-> 서버에 있는 파일 내 컴터에 옮긴ㅁ(따운르도)
-> 지우는것도 가능
-> 리눅스 경로 작성 방법 알면 좋음(파일을 어디다 만들지 경로를 만들어야 함)
-> 맥도 슬래시(/) 씀
java에서 백슬래시 입력하는 방법 ) 하나만 쓰면 escape로 인식
-> 서로 바꿔서 들어가는 필드값이 있음
-> ctrl + space
dir(directory 줄임말)
-> 드라이브 :
-> C드라이브 아래
-> 파일객체가 이것을 타격으로 동작을 하겠음
-> 있으면 true반환
폴더를 만들때 밑에 또다른 폴더 포함(계층적으로 사용가능)
-> mk(make)
->
한번더 실행시
-> 지워짐
-> c드라이브나 storage 사이에
File. static 멤버들 보임
File.separator
file 폴더 밑에 test.txt 텍스트 파일을 저장하기를 원하면
file\test.txt 같이 경로를 설정해줘야 함
-> 번거로움
-> JAVA에서 File.sepator 지원해줌
-> "file" + File.separator + "text.txt") 사용
-> 윈도우와 리눅스에서 모두 돌아가는 것
-> 간단히 구분자 쓰느걸로 활용가능
리눅스가 unix
파일시스템 )
파일이 저장된 폴더 : 부모
파일 : 자식
-> 확장자 txt로 해야 메모장하고 연결됨
-> unhandled exception : 예외 처리 안했다고 함
-> creatNewFile()은 예외처리 안하면 동작 안함
(try -catch처럼 예외처리가 있는지 없는지 체크한다고해서 checked exception 이라고 함)
2가지 방법있음
throws IOException 던지고 있음
폴더가 없음(폴더를 알아서 만들지 않음)
ex01() 폴더 만들어주는건 dir.mkdirs 호출했을때
파일을 만들거나 할때 디렉터리, 파일객체 따로 만듦
-> 이유) exception 회피하기 위해서
-> 없으면 만들어주세요
-> 존재한다니까 있으면임
그대로 쓰면 안됨
-> !(not)
-> 처음 올리는 사람이 이 코드 없이 올리면 바로 오류남
->이렇게 할수도 있지만, 서버는 이렇게 관리 x
(기본적으로 코드로 관리해야함)
-> 여기있는애들 다 불러와서 파일 객체로
-> 파일객체'들'이라서 [배열] 필요(자바입장에서, 디렉터리이건 파일이건 다 파일객체들임)
-> 파일 객체 8개를 불러오는 메소드
-> 저장할 File 배열 준비해야함
-> 자바 홈을 파일 객체로 만들어봄
-> 준비 File[] 배열들
-> 8개가 다 파일객체에 저장됨
-> long타입의 날짜 : TIMESTAMP임
(정수로 길게 나오는애라서 보기가 좋지 않아서 Stringbuiler으로 바꾸기)
->
-(마이너스 적는 이유) : 왼쪽정렬 위해서) 앞에다 적고 뒤에다가 공백 주려고
SimpleDateFormat 클래스 : DAY23
-> 소문자 h : 12시각제
-> 패턴으로 지정된 형식으로 바뀔 수 있음
-> 디렉터리가 맞으면 파일 폴더, 아니면 파일이라고 적기
-> 폴더는 크기가 없으니까 0임
-> 1byte -> 1KB
-> 1024byte -> 1KB
-> 1025byte => 2KB
-> 일단 1KB 있고 나머지가 있으면 1KB 추가하겠다
4개의 append
-> 저장되어있는애들 불러들어서 디렉터리 목록하고 db목록하고 비교해서 지울수 있는건 지우기
-> getname 뽑아서 이름 비교
-> timestamp
원하는 형식으로 위해서는
-> simpledateformat 도움 받기
ex02 쓸모없음
-> file.createNewFile() 쓸모없음
-> 우리는 파일을 내용을 채워서 만들어야 하므로
압축풀지 말고 import 하기
select archive files
-> 바탕화면에
(디폴트값으로 가지고 있음)
Parking lot 만 열어서 풀기!
주차장 최대 5개까지
-> ♨ 예외처리 안함!
ParkingLotMain에서 실행하면 됨
주차관리_실행예시 실행하는 방법 나와있음
try-catch 이전에 처리하는 방식으로 처리하면 됨(1. 추가하기 예외 )
(예외상황
이름은 상관없음
%s : 문자열은 그대로 출력
%(N)s => 앞 숫자(N) : str.length가 N보다 작을 경우 - 공백 추가
-(N)%s => - : 왼쪽 정렬
%(N)s => default(아무것도 적지 않았을경우): 오른쪽 정렬
%(N).(N1)s => 숫자(N1) : 최대 N1길이만큼 출력