file클래스
file도 클래스라는게 존재한다네
주요 메소드를 공부해서 활용할 예정 !! 이거 쭉 보니까 파일정보에 관한 메소드가 많음 활용할 수 있는게 많아 보이니 잘 정리해서 개인프로젝트에 잘 활용 해 보자!!
** 참고 ***
디렉토리의 표기법이 달라서 알아둬야지
\ : 윈도우 식 표기법
/ : UNIX(LINUX) 식 표기법
[활용해 볼 객체들 먼저 생성]
String wExistFile = "D:\\CDW\\WORKPLACE\\BasicProj\\src\\HelloWorld.java"; ( \\ 두 개 한 건 이스케이프문자 아니라고오오오 확인하는거 알지알지알지)
String wNoExistFile ="D:\\CDW\\NoExist.txt";
String uRelativeDir="src/io24/node"; => 상대경로
String uAbsoluteDir ="D:/CDW/NODIR"; =>D:가 있으면 절대경로
파일에 대한 정보를 가진 file객체 두개
File fwExistFile = new File(wExistFile);
File fwNoExistFile = new File(wNoExistFile); => 얜 존재하지 않는 파일인데도 에러가 안난다 ?
디렉토리에 대한 정보를 가진 file객체 두개
File fuRelativeDir = new File(uRelativeDir);
File fuAbsoluteDir = new File(uAbsoluteDir);
1. 파일명 혹은 디렉토리명 얻는 메소드 : String getname();
파일명 얻기
fwExistFile.getName() => HelloWorld.java
wNoExistFile.getName() => NoExist.txt
디렉토리명 얻기
fuRelativeDir.getName() => node
fuAbsoluteDir.getName() => NODIR
--------------내가만든 getName() 메소드------ 이건 클래스 안에서 만들고 메소드 호출해! 알지알지
private static String getName(String pathName) {
방법1. split 및 정규표현식
String[ ] re = pathName.split("[/\\\\]");
return re[re.length-1];
방법2. string 메소드(lastIndexOF,substring) 사용
int beginIndex = pathName.lastIndexOf("\\") != -1 ? => "\\" 가 있음? 없음?
pathName.lastIndexOf("\\")+1 : => 있으면 \\가 있는인덱스번호
pathName.lastIndexOf("/")+1; => 없으면 / 가 있는 인덱스 번호
return pathName.substring(beginIndex);
}
2. 파일인지 디렉토리인지 판단하는 메소드 : isFile(),isDirectory()
true/false를 반환 하는데 이건 파일이나 디렉토리가 존재하지 않아도 false를 반환한다!!
fwExistFile.isFile() =>true
fwNoExistFile.isFile() =>false
fwExistFile.isDirectory() =>false
fuRelativeDir.isDirectory() =>true
fuAbsoluteDir.isDirectory() =>false
3.. 파일 및 디렉토리의 존재 여부를 알려주는 메소드: exists()
if(fuRelativeDir.exists())
if(fuRelativeDir.isFile()) System.out.println("파일이다");
else System.out.println("디렉토리다");
System.out.println(fwExistFile.exists() ? fwExistFile.isDirectory() ? "디렉토리다" : "파일이다" : "존재하지 않는다" );
4. 파일 혹은 디렉토리의 상대경로 얻기: getpath() , 절대경로 얻기 :getAbsolutePath()
*****상대경로로 표기하고, 절대경로 얻을 때 getAbsolutePath() 많이 사용*******
fuRelativeDir의 상대경로: fuRelativeDir.getPath() =>src\io24\node
fuRelativeDir의 절대경로: fuRelativeDir.getAbsolutePath() => D:\CDW\WORKPLACE\BasicProj\src\io24\node
fuAbsoluteDir의 상대경로: fuAbsoluteDir.getPath() => D:\CDW\NODIR 걍 절대경로로 나옴
fuAbsoluteDir의 절대경로: fuAbsoluteDir.getAbsolutePath() => D:\CDW\NODIR
5. 파일 및 디렉토리의 크기 알아내는 메소드 : length
파일은 정확한데 디렉토리는 정확하지 않아서 파일일때만 사용하자! , 파일이 존재하지 않을 때도 0 반환
fwExistFile.length() => 612바이트
fwNoExistFile.length() =>0바이트 존재 x
fuRelativeDir.length() => 이거 정확하지 않음....
fuAbsoluteDir.length() => 0바이트, 존재x
6. 상위 부모 얻기 : getParent()
상대든 절대든 여러경로를 준 경우에 사용하고 주로 디렉토리에 적용한다.
fuRelativeDir.getParent() =>src\io24
fuAbsoluteDir.getParent() =>D:\CDW
File fone = new File("file");
System.out.println(fone.getParent()); => null 상위없으면 null
File ftwo =new File("parent", "child");
System.out.println(ftwo.getParent()); => parent
7.파일 및 디렉토리 삭제 : delet() false/true 반환
System.out.println(fwNoExistFile.delete()); => 없는것은 못 지움 false
파일하나 직접 만들어서 지워보기
File fexist = new File("D:/CDW/지울꺼.txt"); 만들었음
System.out.println(fexist.delete()); => 지워지면 true
8. 디렉토리 생성 : mkdir() 이건 부모 디렉토리가 존재해야 함
mkdirs() 이건 존재하지 않아도 됨
File fmkdir = new File("src/io24/node/temp");
System.out.println(fmkdir.mkdir()); => 만들어지면 true
9.파일 읽기/쓰기 가능 판단 :canRead(), canWrite(),canExecute()
File fcan = new File("d:/cdw/can.txt");
System.out.println(fcan.canRead() ? "읽기가능":"읽기불가");
System.out.println(fcan.canWrite() ? "쓰기가능":"쓰기불가");
System.out.println(fcan.canExecute() ? "실행가능":"실행불가");
11. 파일 혹은 디렉토리의 최근 수정된 시간 얻기 : lastModified()
long time =fcan.lastModified(); => 이거 그 1000분의 1초 얻는 그거라서 어마어마함 단독으로 쓰기엔 부담스러움
SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd a h:mm");
String lastString = dateFormat.format(new Date(time)); =>SimpleDateFormat 이걸써서 보기 좋게 변경하면 됨!
System.out.println("최근수정된 시간:"+lastString);
12. 파일이름 변경 :renameTo (file dest) 반환 true/false
같은 폴더 안이면 파일면이 변경 , 다른폴더면 파일을 이동시킨다.
File fchange = new File("d:/cdw/change.txt");
File fmove = new File("d:/cdw/change2.txt"); =>우선 두개 생성 하고
System.out.println(fchange.renameTo(fmove)); ==> 하나는 변경해보고
System.out.println(fmove.renameTo(new File("D:/CDW/교안폴더/CHANGE3.TXT"))); =>하나는 이동시켜봄
13. 파일목록 및 디렉토리 목록 얻어오기 (기본적으로 배열로 담아온다)
string [ ] list() : 파일 및 디렉토리명만변환
file [ ] listfiles() : 파일 디렉토리에 대한 파일 객체 배열 변환
이름만
String[ ] names = fuRelativeDir.list();
for(String name : names) System.out.println(name);
=> 출력
Node.java
nodir
temp
이름과 정보들 다같이 변환
File[ ] files = fuRelativeDir.listFiles();
for(File f : files) {
String name = f.getName();
String lastModified = dateFormat.format(new Date(f.lastModified()));
if(f.isFile())System.out.print("파일명:"+name);
else System.out.print("디렉토리명:"+name);
System.out.println("최근 수정 시간:"+ lastModified);
}
=> 출력
파일명:Node.java최근 수정 시간:2022-10-13 오후 8:57
디렉토리명:nodir최근 수정 시간:2022-10-13 오후 8:44
디렉토리명:temp최근 수정 시간:2022-10-13 오후 8:59
'학원 > JAVA' 카테고리의 다른 글
10/13 20-3 file클래스 메소드 활용 WindowExplorer (0) | 2022.10.13 |
---|---|
10/13 20-1 ++ 브리지 & 남은 스트림 정리 (0) | 2022.10.13 |
10/12 19-7 +브리지 스트림 이용 (0) | 2022.10.12 |
10/12 19-6 +필터 스트림 이용 (0) | 2022.10.12 |
10/12 19-5 FileReader ... (0) | 2022.10.12 |