[Java] 자바 #39, File입출력(1)

파일&디렉토리

 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));

}

}

}








댓글

Designed by JB FACTORY