써먹는 웹개발

[Java] 파일 만들기 지우기 확인하기 본문

웹개발/Java & Jsp

[Java] 파일 만들기 지우기 확인하기

kmhan 2018. 7. 16. 10:59


728x90
반응형
180721 : File 객체 정보 추가 

file.getAbsolutePath(); // 파일 전체 경로 반환 
file.length(); // 파일 크기 반환 

===============================================

파일은 프로그램이 종료된 뒤에도 사라지지 않고 데이터를 저장하고 있어 언제든 다시 불러올 수 있다. 파일을 만들고, 지우고, 읽고, 쓰고 관리할수 있도록 여러가지 기능을 제공하는 File class를 알아보자. File 클래스를 이용하기 위해서는 먼저 다음과 같이 import해줘야 한다.

import java.io.File;

이제 File 클래스를 생성할 수 있다. File 클래스는 경로를 string으로 받아 생성되며 이름 그대로 파일을 사용할 수 있게 하는 객체를 반환한다고 생각하면 쉽다.

File f = new File("c:\\");

다음은 유용한 메소드를 정리한 것이다.

list() : 디렉터리(폴더)를 File로 가지고 있는 경우 그 안에 있는 파일 목록을 String 배열로 반환한다. 

// f에 지정된 경로에 있는 파일명을 조사해 String[]으로 반환 String fileList[] = f.list();

listFile() : list()와 유사하지만 String[]을 반환하지 않고 File[]을 반환한다. 따라서 이름만 확인하는게 아니라 각각의 파일에 대해 추가적인 처리를 하고 싶을 때 사용할 수 있다.

★ isFile() : 디렉터리가 아닌 파일인지를 알려준다. 반환값은 boolean
★ isDirectory() : 디렉터리인지를 알려준다. 반환값은 boolean

getName() : 이름을 알려준다. 반환값은 String

// 파일 목록을 파일 배열로 받아서 File fileList[] = file.listFiles(); // 각각의 파일을 검사할 수 있다. for (int i = 0; i < fileList.length; i++) { if(fileList[i].isFile()) { // isFile(): 파일인지 확인 //getName() : 이름을 String으로 반환 System.out.println("[파일]" + fileList[i].getName()); }else if (fileList[i].isDirectory() ) { //isDirectory(): 폴더인지 확인 System.out.println("[폴더]" + fileList[i].getName()); }else { System.out.println("[?]" + fileList[i].getName()); } }

있는 파일을 확인했으니 이제 뭔가 실제로 만들어 보자. 먼저 디렉터리 만들기.

mkdir() : 하나의 디렉터리(폴더)를 생성한다. 동일한 이름이 있으면 생성 실패. 반환값은 boolean. (성공하면 true)

지정된 경로를 형성하기 위해 여러개의 디렉터리를 만들어야 하는 경우가 있다. 이 때는 mkdir()만으로는 안 되고 다음 메소드를 사용하면 된다.

mkdirs() : 해당 경로를 형성하는 모든 디렉터리를 만든다. 역시 동일한 이름이 있으면 생성 실패. 반환값은 boolean. (성공하면 true)

경로를 표시할 때 하나의 디렉터리를 들어갈 때 마다 \ 또는 / 으로 표시하는데, 자바에서 \는 escape문자이기 때문에 하나만 써서는 문자로 인식되지가 않는다. 따라서 \로 경로를 표시하고 싶으면 \\으로 두 개를 적어줘야 한다.

// 폴더 생성 String dirStr = "d:/temp"; // "\\" 나 "/" 둘 중 아무거나 사용 가능 // == String dirStr = "d:\\temp"; File newDir = new File(dirStr); if(newDir.mkdir()) { // 폴더 하나를 만들 때 mkdir() 사용 System.out.println("폴더 생성 성공"); }else { System.out.println("폴더 생성 실패"); } // 폴더 여러개 생성 String dirStr1 = "f:/temp2/sub"; // 폴더를 여러개(2개 이상) 만들때는 File newDir1 = new File(dirStr1); if(newDir1.mkdirs()) { // mkdirs() 사용해야함 System.out.println("폴더 생성 성공"); }else { System.out.println("폴더 생성 실패"); }

createNewFile() : 새로운 파일 생성. 동일한 이름이 있으면 못 만든다. try - catch로 감싸줘야 한다. 반환값은 boolean. (성공하면 true)

// 파일 생성 File newFile = new File("f:\\temp\\newFile.txt"); try { if(newFile.createNewFile()) { //같은 파일명이 있으면 생성 실패 System.out.println("newFile.txt 생성 성공"); } else { System.out.println("newFile.txt 생성 실패"); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }

exists(): 파일이 존재하는 지 알려준다. 반환값은 boolean.
canWrite(): 쓸 수 있는 파일인지 알려준다.  반환값은 boolean.
canRead(): 읽을 수 있는 파일인지 알려준다.  반환값은 boolean.
delete(): 파일을 삭제한다.  반환값은 boolean.

if(newFile.exists()) { // 파일이 있는지 확인 System.out.println("newFile.txt는 존재합니다."); }else { System.out.println("newFile.txt는 존재하지 않습니다."); } // canWrite(): 쓰기 가능 여부 확인 if(newFile.canWrite()) { System.out.println("newFile.txt는 쓰기가 가능합니다."); }else { System.out.println("newFile.txt는 쓰기가 불가능합니다."); } // canRead(): 읽기 가능 여부 확인 if(newFile.canRead()) { System.out.println("newFile.txt는 읽기가 가능합니다."); }else { System.out.println("newFile.txt는 읽기가 불가능합니다."); } // delete(): file 삭제 if(newFile.delete()) { System.out.println("newFile.txt를 삭제하였습니다"); } else { System.out.println("newFile.txt를 삭제하지 못했습니다"); }

파일의 접근 권한을 수정할 수도 있다.
파일을 읽기전용으로 만들거나 다시 쓸 수 있게 설정해 줄 수 있다.

SetReadOnly() : 파일을 읽기 전용으로 설정
setWritable(true) : 파일을 쓰기 가능으로 설정

File file = new File("f:\\temp\\newFile.txt"); // 파일을 읽기전용으로 만들어줍니다. 한번 설정하면 프로그램이 종료되도 유지됩니다. file.setReadOnly(); // 다시 파일을 쓰기 가능하게 바꿔줍니다. file.setWritable(true);


728x90
반응형


Comments