본문 바로가기
Java

[Java] File 클래스(1) / File(String pathname) / 경로 표기법

by bkuk 2022. 10. 13.

File 클래스는 파일이라는 개념을 추상화한 클래스입니다.

  • 주요 생성자
File(String pathname) pathname을 매개변수로 받아 파일을 생성

 

  • 경로 표기법

 

위와 같은 test.txt 파일을 경로로 표시한다면?

표기법 File 클래스 생성문
"C:\\Java\\test.txt" File  file1 = new File("C:\\Java\\test.txt");
"C:/Java/test.txt" File  file2 = new File("C:/Java/test.txt");

 


 

아래와 같이 java라는 디렉토리 안의 test.txt 파일이 있습니다.

 

 

 

  • 클래스 생성 예시
// 파일에 대한 클래스 생성 1
File  file1 = new File("C:\\Java\\test.txt");

// 파일에 대한 클래스 생성 2
File  file2 = new File("C:/Java/test.txt");

// 파일에 대한 클래스 생성 3
// 이 파일은 java라는 디렉토리 안의 실제로 없는 파일
// 클래스를 생성한다고 해서 파일을 생성해주진 않음.
File  file3 = new File("C:/Java/test1.txt");

// 디렉토리에 대한 클래스 생성 1
File dir1 = new File( "C:\\java");
// 디렉토리에 대한 클래스 생성 2
File dir2 = new File( "C:/java");

 

파일이 존재하는지 확인하는 exists() 메서드

해당 클래스가 디렉토리인지 확인하는 isDirectory() 메서드

읽기 전용인지? 숨긴 파일인지? canWrite(), isHidden() 메서드

  • 메서드
// 파일이 존재하는 exists() 메서드
System.out.println( file1.exists() );	// true
System.out.println( dir1.exists() );	// true
System.out.println( file3.exists() );	// flase

// 해당 클래스가 실제로 디렉토리인지 isDirectory 
System.out.println( file1.isDirectory() );	// false
System.out.println( dir1.isDirectory() );	// true

// 읽기 전용인지?, 숨긴 파일인지? canWrite, isHidden
System.out.println( file1.canWrite()); // true
System.out.println( file1.isHidden()); // false

 

 


  • 경로 관련 메서드(실제로 파일이 생성되진 않았으며, exists() 메서드를 통해 확인)
// 현재 이클립스 프로젝트의 현재경로: "C:/java/java-workspace/FileEx01"

// 절대경로 표기
File dir1 = new File( "C:/java/java-workspace/FileEx01" );
File file1 = new File( "C:/java/java-workspace/FileEx01/test" );

// 상대경로 표기
File dir2 = new File( "." );
File file2 = new File( "./test.txt" );

System.out.println( file1.getName());	// test
System.out.println( file2.getName());	// test

System.out.println( file1.getParent() );	// C:\java\java-workspace\FileEx01
System.out.println( file2.getParent() );	// .

System.out.println( file1.getPath() );	// C:\java\java-workspace\FileEx01\test
System.out.println( file2.getPath() );	// .\test

System.out.println( file1.getAbsolutePath() );	// C:\java\java-workspace\FileEx01\test
System.out.println( file2.getAbsolutePath() );	// C:\java\java-workspace\FileEx01\.\test

try {
    System.out.println( file1.getCanonicalPath() );	// C:\java\java-workspace\FileEx01\test
    System.out.println( file2.getCanonicalPath() );	// C:\java\java-workspace\FileEx01\test
} catch (IOException e) {
    e.printStackTrace();
}

 

System.out.println( dir1.exists() );	// 디렉토리는 존재함으로 true
System.out.println( file1.exists() );	// 파일이 실제로 없으므로 false
System.out.println( dir2.exists() );	// 디렉토리는 실제로 존재함으로 true
System.out.println( file2.exists() );	// 파일이 실제로 없으므로 false

 


 

아래와 같이 'FileEx01' 이라는 디렉토리 안의 appache-tomcat-9... 파일이 있습니다.

 

절대경로 및 상대경로로 2개의 클래스를 생성하고

파일이 존재하는지, 몇 byte인지 확인하고,

이를 Mbyte로 변환하고 언제 마지막으로 수정되었는지 확인

// 절대 경로
File file1 = new File("C:/java/java-workspace/FileEx01/apache-tomcat-9.0.65-windows-x64 (1).zip");
// 상대 경로
File file2 = new File("./apache-tomcat-9.0.65-windows-x64 (1).zip");

System.out.println( file1.exists() );	// true
System.out.println( file2.exists() );	// true

// 기타 속성
// 파일 크기(length) -> byte로 표기됨.
System.out.println( file2.length() + "Byte");	// 12849489Byte

// 만약 byte -> Mbyte로 변환하고 싶다면?
System.out.println( file1.length() / (1024 * 1024) + "Mbyte");	// 12Mbyte

// lastModified() -> timestamp로 표기되어서 출력 -> Data 클래스로 생성 후 toString() 메서드 호출
System.out.println( new Date(file2.lastModified()).toLocaleString());	// 2022. 10. 13. 오전 10:30:46


 

// 디렉토리 내부의 디렉토리나 파일이름 목록
// list			: String[]
// listFiles	: file[]

// File 클래스 생성
File file = new File("C:/Java");

String[] lists = file.list();

//디렉토리 안 목록을 출력
System.out.println( "====Arrays.toString() 메서드====");
System.out.println( Arrays.toString(lists) );

System.out.println( "\n" + "====list는 String[]====");
for( String list : lists ) {
    System.out.println( list );
}

System.out.println("\n" + "====listFiles은 file[]====");
File[] ListFiles = file.listFiles();
for( File listFile : ListFiles ) {
    System.out.println( listFile );
}

 


  • mkdir() : 디렉토리 생성
  • renameTo() : 이름 변경
  • delete : 디렉토리 삭제
  • createNewFile() : 디렉토리 안 클래스 생성

 

 

mkdir() : 디렉토리 생성

// File 클래스 생성
File file1 = new File( "C:/Java/dir1" );
File file2 = new File( "C:/Java/dir2" );

// 디렉토리 생성
file1.mkdir();
file2.mkdir();

 

 

renameTo() : 이름 변경

// File 클래스 생성
File file1 = new File( "C:/Java/dir1" );
File file2 = new File( "C:/Java/dir2" );
File file3 = new File( "C:/Java/dir3" );

// 디렉토리 생성
file1.mkdir();
file2.mkdir();

// 디렉토리 이름 변경
file1.renameTo(file3);

 

createNewFile() : 디렉토리 안 클래스 생성

File file4 = new File( "C:/Java", "test1.txt" );
File file5 = new File( "C:/Java", "test2.txt" );

댓글