티스토리 뷰

JAVA(프로그래밍)

java File Class 알아보기

알 수 없는 사용자 2018. 7. 28. 08:05

java File Class 알아보기

 

안녕하세요. java File Class 에 대해 알아보겠습니다.

java.io.File 클래스는 디스크에 있는 파일을 의미합니다. 하지만 파일에 들어 있는 내용은 아니랍니다.

실제 파일의 내용 보다는 파일 혹은 디렉토리를 의미한다고 생각하시면 됩니다.

File 클래스에는 아쉽게도 파일을 읽거나 쓸수 있는 메소드가 제공되지는 않습니다.

대신 File 클래스를 사용하면 String 파일명을 사용하는 경우에 비해 안전하게 파일을 표현할수 있습니다.

 

예제를 통해 File 클래스에 대해 알아보겠습니다.

 

ex)

파일 객체를 생성해보겠습니다

java.io.File = new File("leeSeJIn.txt");

 

--> 이미 존재하는 파일을 나타냅니다.

 

그러면 이제 File 클래스를 이용하여 새로운 디렉토리를 만들어 보겠습니다.

 

 

 

public class Test {

 public static void main(String[] args) {
  

  File dir = new File("C:\\testDir\\testNewDir");
  dir.mkdirs();
    

 }

 

해당 소스를 컴파일하면 기존에 없었던 디렉토리가 생성되는걸 확인할수 있습니다.

 

dir.mkdir() 과 dir.mkdirs();

2가지 메소드가 존재합니다.

메소드명에서 유추할수 있듯이 복수의 디렉토리를 생성할때는 mkdirs()를 사용합니다.

위 소스에는 디렉토리를 2개 생성하고 있습니다.

testDir 디릭토리 생성, testNewDir 디렉토리 생성.

이렇게 하위 디렉토리까지 생성할경우에는 mkdirs()메소드를 사용해야 합니다.

midkr()메소드를 바꾸고 실행해보면 디렉토리가 생성되지 않는걸 확인할수 있습니다.

 

이제 디렉토리 경로에 있는 내용의 목록을 출력하는 방법에 대해 알아보겠습니다.

 

 import java.io.*;

public class Test {

 public static void main(String[] args) {
  

  File dir = new File("C:\\aa");
  
  if(dir.isDirectory()) {
   String[] dirs = dir.list();
   for(int i=0; i < dirs.length; i++) {
    
    System.out.println(dirs[i]);
   }
  }
    

 }
}

 

결과값 ->

DSC00001.JPG
DSC00002.JPG
DSC00003.JPG
DSC00004.JPG
DSC00005.JPG
DSC00007.JPG
DSC00008.JPG
DSC00009.JPG
DSC00010.JPG
DSC00011.JPG
DSC00012.JPG
DSC00013.JPG
DSC00014.JPG
DSC00016.JPG

c:\\aa 의 경로에 접근하여 해당경로에 있는 파일명들을 출력하고 있습니다.

 

 

실제 해당 경로에 가보면 결과값에 출력된 파일들을 확인할수 있습니다.

 

이번에는 파일의 절대 경로명을 구하는 메소드를 알아보겠습니다.

System.out.println(dir.getAbsolutePath());

File 객체애 있는 getAbsolutePath() 메소드를 사용하여 절대경로를 구할수 있습니다.

파일 또는 디렉토리 삭제하는 방법

boolean deleteFlag= file.delete();

해당 메소드를 사용하면 파일 혹은 디렉토리를 삭제할수 있습니다.

삭제 성공하였을 경우에는 reurn true를 반환합니다.

참고로 디렉토리를 삭제할 경우에는 디렉토리 안에 파일들이 없어야 삭제가 가능합니다.

 

 import java.io.*;

public class Test {

 public static void main(String[] args) {
  

  File dir = new File("C:\\testDir2");
  
  boolean deleteFlag = dir.delete();
  
  //testDir2 디렉토리를 삭제해보겠습니다.
  
  System.out.println("파일 삭제 여부 " + deleteFlag);
    

 }
}

 

실행결과

파일 삭제 여부 false

파일 삭제가 실패하였습니디다. 해당 경로에는 파일이 존재하기에 파일 삭제 실패.

먼저 파일을 지우고 디렉토리를 지워보겠습니다.

 import java.io.*;

public class Test {

 public static void main(String[] args) {
  

  File dir = new File("C:\\testDir2\\test.txt");
  
  boolean deleteFlag = dir.delete();
  
  
  //testDir2 디렉토리를 삭제해보겠습니다.
  
  System.out.println("파일 삭제 여부 " + deleteFlag);
  
  File dir2 = new File("C:\\testDir2");
  
     deleteFlag = dir2.delete();
    
  
  System.out.println("디렉토리 삭제 여부 " + deleteFlag);
    

 }
}


결과값

파일 삭제 여부 true
디렉토리 삭제 여부 true

먼저 파일을 삭제하여 빈 디렉토리를 만들고 디렉토리를 삭제하였더니 원하는 결과값을 얻을수 있었습니다.

 

 import java.io.*;

public class Test {

 public static void main(String[] args) {
  
  String sourcePath = "C://test.txt";
  String targetPath = "C://copyTest.txt";


  File sourceFile = new File(sourcePath);
  File targetFile = new File(targetPath);
  sourceFile.renameTo(targetFile);

 }
}


파일의 이름을 변경하거나 디렉토리명을 변경하고 싶을 경우에는

renameTo 메소드를 사용하시면 됩니다.

 

이상 java File 클래스에 알아봤습니다.

댓글