728x90
File의 생성자와 경로와 관련된 메서드
생성자/메서드 | 설명 |
File(String fileName) | 주어진 문자열(fileNmae)을 이름으로 갖는 파일을 위한 File인스턴스를 생성한다. 파일 뿐만 아니라 디렉토리도 같은 방법으로 다룬다. 여기서 fileName은 주로 경로(path)를 포함해서 지정해주지만, 파일 이름만 사용해도 되는데 이 경우 프로그램이 실행되는 위치가 경로(path)로 간주된다. |
File(String pathName, String fileName) File(File pathName, String fileName) |
파일의 경로와 이름을 따로 분리해서 지정할 수 있도록 한 생성자, 이 중 두 번째 것은 경로를 문자열이 아닌 File인스턴스인 경우를 위해서 제공. |
File(URI uri) | 지정된 uri로 파일을 생성 |
String getName() | 파일 이름을 String으로 반환 |
String getPath() | 파일의 경로(path)를 String으로 반환 |
String getAbsolutePath() File getAbsoluteFile() |
파일의 절대경로를 String으로 반환 파일의 절대 경로를 File로 반환 |
String getParent() File getParentFile() |
파일의 조상 디렉토리를 String으로 반환 파일의 조상 디렉토리를 File로 반환 |
String getCanonicalPath() File getCanonicalFile() |
파일의 정규경로를 String으로 반환 파일의 정규경로를 File로 반환 |
경로와 관련된 File의 멤버변수
멤버변수 | 설명 |
static String pathSeparator | OS에서 사용하는 경로(path) 구분자. - 윈도우 ";" - 유닉스 ":" |
static char pathSeparatorChar | OS에서 사용하는 경로(path) 구분자. - 윈도우 ':' - 유닉스 ';' |
static String separator | OS에서 사용하는 이름 구분자. - 윈도우 "\" - 유닉스 "/" |
static char separatorChar | OS에서 사용하는 이름 구분자. - 윈도우 '\' - 유닉스 '/' |
절대경로VS정규경로
절대 경로(absolute path) | - 파일시스템의 루트(root)로부터 시작하는 파일의 전체 경로를 의미함. |
- OS에 따라 다르지만, 하나의 파일에 대해 둘 이상의 절대 경로가 존재 가능하다. (현재 디렉토리를 의미하는 '.'과 같은 기호나 링크를 포함하고 있는 경우) |
|
예)'C:\jdk1.8\work\ch15\FileEx1.java' == 'C:\jdk1.8\work\ch15\.\FileEx1.java' |
|
정규경로(canonical path) | - 기호나 링크 등을 포함하지 않는 유일한 경로이다. |
예) 'C:\jdk1.8\work\ch15\FileEx1.java' |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import java.io.*;
class FileEx1 {
public static void main(String[] args) throws IOException
{
File f = new File("c:\\jdk1.8\\work\\ch15\\FileEx1.java");
//1. 경로와 이름 따로 지정해서 인스턴스를 생성하는 생성자 사용
File f1 = new File("c:\\jdk1.8\\work\\ch15", "FileEx1.java");
//2. 경로와 이름 따로
File dir = new File("c:\\jdk1.8\\work\\ch15");
File f2 = new File(dir, "FileEx1.java");
String fileName = f.getName();
int pos = fileName.lastIndexOf(".");
System.out.println("경로를 제외한 파일이름 - " + f.getName());
System.out.println("확장자를 제외한 파일이름 - " + fileName.substring(0,pos));
System.out.println("확장자 - " + fileName.substring(pos+1));
System.out.println("경로를 포함한 파일이름 - " + f.getPath());
System.out.println("파일의 절대경로 - " + f.getAbsolutePath());
System.out.println("파일의 정규경로 - " + f.getCanonicalPath());
System.out.println("파일이 속해 있는 디렉토리 - " + f.getParent());
System.out.println();
System.out.println("File.pathSeparator - " + File.pathSeparator);
System.out.println("File.pathSeparatorChar - " + File.pathSeparatorChar);
System.out.println("File.separator - " + File.separator);
System.out.println("File.separatorChar - " + File.separatorChar);
System.out.println();
System.out.println("user.dir=" + System.getProperty("user.dir"));
System.out.println("sun.boot.class.path=" + System.getProperty("sun.boot.class.path"));
}
}
|
cs |
실행결과 |
경로를 제외한 파일이름 - FileEx1.java 확장자를 제외한 파일이름 - FileEx1 확장자 - java 경로를 포함한 파일이름 - c:\jdk1.8\work\ch15\FileEx1.java 파일의 절대경로 - c:\jdk1.8\work\ch15\FileEx1.java 파일의 정규경로 - C:\jdk1.8\work\ch15\FileEx1.java 파일이 속해 있는 디렉토리 - c:\jdk1.8\work\ch15 File.pathSeparator - ; File.pathSeparatorChar - ; File.separator - \ File.separatorChar - \ user.dir=C:\HTMLCSSJSJSP\JavaJungSuk sun.boot.class.path=null |
주의! File 인스턴스를 생성했다고 해서
파일이나 디렉토리가 생성되는 것은 아니다!
존재하는 파일을 참조할 때는 위와 같이 하면 되지만
존재하지 않는 파일을 새로 생성해야 할 때는 File의 메서드를 사용하자
▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽
File의 메서드
메서드 | 설명 |
boolean canRead() | 읽을 수 있는 파일인지 검사 |
boolean canWrite() | 쓸 수 있는 파일인지 검사 |
boolean canExecute() | 실행할 수 있는 파일인지 검사 |
int compareTo(File pathname) | 주어진 파일 또는 디렉토리를 비교한다. 같으면 0을 반환, 다르면 1 또는 -1 반환. (Unix시스템에서는 대소문자를 구별 Windows에서는 구별하지 않음) |
boolean exists() | 파일이 존재하는지 검사 |
boolean isAbsolute() | 파일 또는 디렉토리가 절대경로명으로 지정되었는지 확인 |
boolean isDirectory() | 디렉토리인지 확인 |
boolean isFile() | 파일인지 확인 |
boolean isHidden() | 파일의 속성이 '숨김(Hidden)'인지 확인 또한 파일이 존재하지 않으면 flase를 반환 |
boolean createNewFile() | 아무런 내용이 없는 새로운 파일을 생성 (단, 생성하려는 파일이 이미 존재하면 생성x) [사용예시] File f = new File("c:\\jdk1.8\\work\\test3.java"); f.createNewFile(); |
static File createTempFile (String prefix, String suffix) |
임시파일을 시스템의 임시 디렉토리에 생성 [사용예시] System.out.println(File.createTempFile("work", "tmp")); 결과 : c:\windows\TEMP\work14247.tmp |
static File createTempFile (String prefix, String suffix, File directory) |
임시파일을 시스템의 지정된 디렉토리에 생성 |
boolean delete() | 파일을 삭제 |
void deleteOnExit() | 응용 프로그램 종료시 파일을 삭제 주로 실행 시 작업에 사용된 임시파일을 삭제하는 데 사용 |
boolean equals(Object obj) | 주어진 객체(주로 File인스턴스)가 같은 파일인지 비교 (Unix시스템에서는 대소문자 구별 Windows에서는 구별하지 않음) |
long lastModified() | 파일의 마지막으로 수정된 시간을 지정된 시간을 반환 |
long length() | 파일의 크기를 반환 |
String[] list() | 디렉토리의 파일목록(디렉토리 포함)을 String배열로 반환 |
String[] list(FilenameFilter filter) File[] list(FilenameFilter filter) |
FilenameFilter인스턴스에 구현된 조건에 맞는 파일을 String배열(File배열)로 반환 |
File[] listFiles() File[] listFiles(FileFilter filter) File[] listFiles(FilenameFilter f) |
디렉토리의 파일목록(디렉토리 포함)을 File배열로 반환(filter가 지정된 경우에는 filter의 조건과 일치하는 파일만 반환) |
static File[] listRoots() long getFreeSpace() long getTotalSpace() long getUsablSpace() |
컴퓨터의 파일시스템의 root의 목록 (floppy, CD-ROM, HDD drive)을 반환 (예: A:\, C:\, D:\) get으로 시작하는 메서드들은 File이 root일 때, 비어있는 공간, 전체 공간, 사용가능한 공간을 바이트 단위로 반환 |
boolean mkdir() boolean mkdirs() |
파일에 지정된 경로로 디렉토리(폴더)를 생성, 성공하면 true. mkdirs는 필요하면 부모 디렉토리까지 생성. |
boolean renameTo(File dest) | 지정된 파일(dest)로 이름을 변경 |
boolean setExecutable(boolean executable) boolean setExecutable (boolean executable, boolean ownerOnly) boolean setReadable(boolean readable) boolean setReadable (boolena readable, boolean ownerOnly) boolean setReadOnly() boolean setWritable(boolean writable) boolean setWritable (boolean writable, boolean ownerOnly) |
파일의 속성을 변경한다. OwnerOnly가 true면, 파일의 소유자만 해당 속성을 변경할 수 있다. |
boolean setLastModified(long t) | 파일의 마지막으로 수정된 시간을 지정된 시간(t)으로 변경 |
Path toPath() | 파일을 Path로 변환해서 반환 |
URI toURI() | 파일을 URI로 변환해서 반환 |
728x90
'코딩 > JAVA' 카테고리의 다른 글
메서드_return, 반복문_break, continue 차이 및 특징_타 블로그 (0) | 2021.08.16 |
---|---|
MultipartConfig와 Part인터페이스(링크) (0) | 2021.08.05 |
변수의 초기화_자바의정석 (0) | 2021.08.02 |
생성자를 이용한 인스턴스의 복사_자바의정석 (0) | 2021.08.02 |
Eclipse (설정 가져오기/내보내기)Preferences Export/Import (0) | 2021.07.30 |