[Java] 자바 #39, File입출력(1)
- 프로그래밍 언어/Java
- 2019. 3. 7. 21:39
파일&디렉토리
1. 엑세스 & 조작. -> 윈도우 탐색기
2. 파일 데이터 입출력. -> 메모장
파일입출력의 기본
1. File 객체 생성
2. File 객체에 담을 파일의 경로.
파일 정보 가져오기
- 파일 접근 -> 외부 리소스 접근 -> 참조 객체(대리인) 생성 -> 특정 클래스의 인스턴스 -> 객체조작 -> 외부 파일 조작.
- 자바는 대소문자를 구분한다 + 경로명도 대소문자 구문한다. => 즉 대소문자 잘써줘야 한다는 듯이다.
파일 경로변수 생성
String path = "C:\\Class\\File\\test.txt";
파일 참조 객체생성
File file = new File(path);
if (file.exists()) {true, false 반환
// 업무진행
// 파일의 정보 가져오기
System.out.println("file.getName() : " + file.getName()); // 폴더명
System.out.println("file.isFile() : " + file.isFile()); // 파일인지?
System.out.println("file.isDirectory() : " + file.isDirectory()); // 폴더인지??
System.out.println("file.lastModified() : " + file.lastModified()); // 수정된 날짜(틱값)
System.out.println("file.canRead() : " + file.canRead()); // 읽기 가능??
System.out.println("file.canWrite() : " + file.canWrite()); // 수정 가능??
System.out.println("file.isHidden() : " + file.isHidden()); // 숨김파일인지??
System.out.println("file.length() : " + file.length()); // 파일의 크기 -> Byte 단위.
System.out.println("file.getPath() : " + file.getPath()); // 파일의 상대경로 ***
System.out.println("file.getAbsolutePath() : " + file.getAbsolutePath()); // 파일의 절대경로 ***
System.out.println("file.canExecute() : " + file.canExecute()); // 접근가능?
}else {
System.out.println("파일이 없습니다.");
}
폴더 정보 가져오기
// 디렉토리 접근 -> 정보가져오기
String path = "C:\\Class\\File";
File dir = new File(path);
if (dir.exists()) { true, false 반환
// 디렉토리 정보 가져오기
System.out.println("dir.getName() : " + dir.getName()); // 파일명
System.out.println("dir.isFile() : " + dir.isFile()); // 파일인지?
System.out.println("dir.isDirectory() : " + dir.isDirectory()); // 폴더인지??
System.out.println("dir.lastModified() : " + dir.lastModified()); // 수정된 날짜(틱값)
System.out.println("dir.canRead() : " + dir.canRead()); // 읽기 가능??
System.out.println("dir.canWrite() : " + dir.canWrite()); // 수정 가능??
System.out.println("dir.isHidden() : " + dir.isHidden()); // 숨김파일인지??
System.out.println("dir.length() : " + dir.length()); // 폴더의 크기, 0
System.out.println("dir.getPath() : " + dir.getPath()); // 파일의 상대경로 ***
System.out.println("dir.getAbsolutePath() : " + dir.getAbsolutePath()); // 파일의 절대경로 ***
System.out.println("dir.canExecute() : " + dir.canExecute()); // 접근가능?
System.out.println("dir.getParent()" + dir.getParent()); // C:\Class 부모폴더의 경로.
}else {
System.out.println("폴더가 없습니다.");
}
파일 조작하기
생성(X), 복사(X), 이동, 파일명수정, 삭제
파일 위치 이동하기
- AAA(test.txt) -> BBB(test.txt) 이동하기.
String path = "C:\\Class\\File\\AAA\\test.txt";
File file = new File(path);
if (file.exists()) {
이동 후에 존재할 파일 참조 객체
String path2 = "C:\\Class\\File\\BBB\\test.txt";
File file2 = new File(path2);
이동하기( 같은 파일이 존재하면 아무행동도 안함 )
if (file.renameTo(file2))
System.out.println("이동 완료");
else
System.out.println("같은 파일이 존재합니다. 이동 실패");
}
파일 삭제하기
- 해당 경로에 있는 파일 삭제!
String path = "C:\\Class\\File\\AAA\\test.txt";
File file = new File(path);
if (file.exists()) {
if (file.delete())// 지우기
System.out.println("성공");
else
System.out.println("실패");
}
파일명 바꾸기 (renameTo)
// test.txt -> hong.txt
String path = "C:\\Class\\File\\BBB\\test.txt";
File file = new File(path);
if (file.exists()) {
String path2 = "C:\\Class\\File\\AAA\\hong.txt";
File file2 = new File(path2);
file.renameTo(file2);
System.out.println("이름바꾸기 성공.");
}
폴더 조작하기
폴더 생성하기
String path = "C:\\Class\\File\\CCC"; // 희망경로.
File dir = new File(path);
if (!dir.exists()) {
dir.mkdir(); // make directory
System.out.println("생성 완료");
} else {
System.out.println("같은 이름의 폴더가 이미 존재합니다.!!");
}
요구사항 ] 회원 -> 회원별로 개인정보를 저장할 폴더 필요.
String[] member = { "홍길동", "아무개", "하하하", "호호호", "후후후" };
for (String name : member) {
path = String.format("C:\\Class\\File\\[개인폴더]%s님", name);
dir = new File(path);
dir.mkdir();
System.out.println(name + "폴더 생성완료");
}
요구사항] 2018-01-01~ 2018-12-31 : 날짜별 365개 폴더 생성.
Calendar c = Calendar.getInstance();
c.set(2018, 00, 01);
for (int i = 0; i < 365; i++) {
System.out.println(String.format("%tF", c));
path = "C:\\Class\\File\\" + String.format("%tF", c);
File file = new File(path);
file.mkdir();
c.add(Calendar.DATE, 1); //날짜 정보 1씩 증가!
}
폴더 이름바꾸기.(이동하기겸임)
- 폴더 CCC -> DDD
String path = "C:\\Class\\File\\FFF";
File dir = new File(path);
if (dir.exists()) {
String path2 = "C:\\Class\\DDD";
File dir2 = new File(path2);
dir.renameTo(dir2);
System.out.println("완료");
}
폴더 삭제하기
- 빈폴더만 삭제가능.
String path = "C:\\Class\\DDD";
File dir = new File(path);
if (dir.exists()) {
System.out.println(dir.delete());
}
폴더의 내용보기
- 현재폴더 안에 들어있는 자식 폴더의 목록과 자식 파일의 목록을 가져오기
String path = "C:\\eclipse\\eclipse";
File dir = new File(path);
if (dir.exists()) {
String[] list = dir.list();
for(String name : list) {
System.out.println(name);
File file = new File(path+"\\"+name);
System.out.println(file.length());
}
File[] list=dir.listFiles(); *****
for(File f : list) {
System.out.println(f.getName());
System.out.println(f.length());
}
File[] list = dir.listFiles();
for (File file : list) {
if (file.isDirectory()) {
System.out.printf("[%s]\n", file.getName());
}
}
for (File file : list) {
if (file.isFile()) {
Date date = new Date(file.lastModified());
System.out.printf("[%10s]\t%s\t%10s\n", file.getName(), file.length()// ,file.lastModified()
, String.format("%tF %tT", date, date));
}
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #41, File입출력(3) - 회원정보 입출력하기 예제 (절대경로, 상대경로) (0) | 2019.03.08 |
---|---|
[Java] 자바 #40, FIle입출력(2) (0) | 2019.03.08 |
[Java] 자바 #38, TreeMap, Properties 개념 (0) | 2019.03.06 |
[Java] 자바 #37, Set 계열 컬렉션(HashSet, TreeSet) (0) | 2019.03.06 |
[Java] 자바 #36, Iterator 반복자 (0) | 2019.03.05 |