Daily coding
Java Basic : day 7 - File : 파일 입출력 본문
File : 파일 입출력
- logic 부분 : 직접 구현하는 부분 (DAO, DTO ...), 사용자가 직접 코드 짜야함
- 기능 부분 : upload, file... , 외운다기 보다는 이해한 후에 코드 불러와서 사용하는 것이 좋다.
=> File
window 파일
- *.lib : library, 정적 파일 - 메모리에 저장되어 꺼내서 사용, 보안 강함
- *.dll : dynamic link library, 동적파일 - 필요할 때마다 그떄그때 읽음, 가볍지만 해킹에 취약
- *.jar : Java의 라이브러리 파일
- 텍스트 파일 (*.txt) : 모든 파일의 기본
저장매체(데이터 저장) :
- File / Database(궁극적으로는 file, file을 프로그래밍화한 것)
- 이름 나이 주소
- 홍길동 26 서울시 -> parsing 가능
- parsing : 원하는 데이터를 취합해서 가져오는 것 (row별로)
- parser -> 데이터를 파싱하는 프로그램
파일(database) 입출력의 목적 :
- 데이터 관리, 저장, 유지
* CRUD :
- 추가(Create), 삭제(Delete), 읽기(Read), 쓰기(Write)
- 검색(Search, Select), 수정(Update)
** 제일 큰 목적은 읽기 / 쓰기 (가장 중요)
*/
// AWT ?
// 게시판 만들것임 (MVC구조로 만들고 Spring가면 더 잘 할 수 있음)
// Spring -> MVC 구조
//=================================================
파일 목록보기(검색)
1-1. file.list();
: 해당 디렉토리에 존재하는 파일명을 모두 불러오는 String 배열
File fdir = new File("c:\\");
// 위의 코드는 파일 데이터타입의 fdir을 생성하고, 파일의 주소 포인터를 초기화한다.
String filelist[] = fdir.list(); <-- fdir 의 주소에 있는 파일 리스트를 스트링 배열에 저장한다.
for (int i = 0; i < filelist.length; i++) { // 파일목록 출력
System.out.println(filelist[i]);
}
파일 리스트에는 있으나 실제 폴더에 존재하지 않는 파일은 숨겨진 파일도 다 출력해서 보여준다.
1-2. fdir.listFiles()
: 해당 디렉토리에 존재하는 폴더명을 모두 불러오는 String 배열
2. fdir.isFile();
: 파일인지 확인해주는 메소드
3. filelist[i].isDirectory()
: 폴더인지 확인해주는 메소드
File filelist[] = fdir.listFiles();
for (int i = 0; i < filelist.length; i++) {
if(filelist[i].isFile()) {
System.out.println("[파일]" + filelist[i].getName());
// 파일인지 확인한 후 파일명 출력
}
else if(filelist[i].isDirectory()) {
//폴더인지 확인하고 폴더이름 출력
System.out.println("[폴더]" + filelist[i].getName());
} else {
System.out.println("[?]" + filelist[i].getName());
}
}
파일 생성하기
String fileStr = "d:\\tmp\\newFile.txt";
File newFile = new File(fileStr); // <--- 주소가 담긴 스트링을 넣어주거나
File newFile = new File( "d:\\tmp\\newFile.txt" ); // <--- 직접 " " 에 집어 넣어도 됨
// 위의 코드는 파일 포인터만 생성해주는 코드, 디렉토리에 가보면 없음
// 직접 파일은 만드는 코드는
// newFile.createNewFile();
// 위의 코드는 예외처리가 필요한 코드이며
// boolean이라 조건을 걸어주어야 함
try {
if(newFile.createNewFile()) {
System.out.println("파일 생성 성공 ");
// 한번만 실행하면 성공
}else {
System.out.println("파일 생성 실패");
// 다시 한번 실행하면 실패로 뜬다. 이미 같은이름으로 만들어 졌기 때문
}
} catch (IOException e) {
e.printStackTrace();
}
폴더 생성방법
String dirStr = "d:\\tmp\\sub";
// 역슬래쉬 2개(\\) 대신 슬래쉬 1개 (/)로도 대체 가능하다
File newDir = new File(dirStr);
if(newDir.mkdir()) {
System.out.println("newDir.mkdir() 디렉토리 생성 성공");
//한번만 실행면 성공
}else {
System.out.println("newDir.mkdir() 디렉토리 생성 실패");
// 다시 한번 실행하면 실패로 뜬다.
}
// 아래 코드는 폴더 생성이 안된다.
// tmp1이 생성되어 있지 않았기 때문
String dirStr1 = "d:\\tmp1\\sub";
File newDir1 = new File(dirStr1);
if(newDir1.mkdir()) {
System.out.println("newDir1.mkdir() 디렉토리 생성 성공");
}else {
System.out.println("newDir1.mkdir() 디렉토리 생성 실패"); // 출력됨
}
tmp1이라는 폴더와 그 안에 sub폴더를 모두 생성하고 싶으면
newDir.mkdirs();
위의 메소드를 사용해야한다.
if(newDir1.mkdirs()) {
System.out.println("newDir1.mkdirs() 디렉토리 생성 성공"); //한번만 실행면 성공
}else {
System.out.println("newDir1.mkdirs() 디렉토리 생성 실패"); // 다시 한번 실행하면 실패로 뜬다.
}
String filename = "newfile1" + ".txt";
File myfile = new File(dirStr+ "\\" +filename);
try {
if(myfile.createNewFile()) {
System.out.println("myfile.createNewFile() 생성 성공"); //한번만 실행면 성공
}else {
System.out.println("myfile.createNewFile() 생성 실패"); // 다시 한번 실행하면 실패로 뜬다.
}
} catch (Exception e) {
}
파일 존재 여부 확인 : .exists()
if(myfile.exists()) {
System.out.println("파일이 존재합니다.");
}else {
System.out.println("파일이 존재하지 않습니다.");
}
파일 삭제 : .delete();
if(myfile.delete()) {
System.out.println("myfile 파일을 삭제했습니다.");
}else {
System.out.println("myfile 파일을 삭제하지 못했습니다.");
}
읽기만 가능한 파일 만들기 : setReadOnly()
myfile.setReadOnly();
파일 읽기가능 여부 : canRead()
if(myfile.canRead()) {
System.out.println("myfile 파일 읽기가 가능합니다."); //출력됨
}
else {
System.out.println("myfile 파일 읽기가 불가능합니다.");
}
파일 쓰기 가능 여부 : canWrite()
if(myfile.canWrite()) {
System.out.println("myfile 파일 쓰기가 가능합니다.");
}
else {
System.out.println("myfile 파일 쓰기가 불가능합니다."); // 출력 됨
}
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 7 - File write 파일 쓰기 (0) | 2019.11.26 |
---|---|
Java Basic : day 7 - File Read 파일 읽기 (0) | 2019.11.26 |
Java Basic : day 7 - Exception 예외처리3 (0) | 2019.11.26 |
Java Basic : day 7 - Exception 예외처리2 (0) | 2019.11.26 |
Java Basic : day 7 - Exception 예외처리1 (0) | 2019.11.26 |