Java isDirectory()
========================================
C:\java0901 폴더 내 memo.txt 파일을 새로 만들어 놓는다. memo.txt 파일에 아무 글이나 입력한다.
C:\java0901 폴더 내 ppt 폴더를 새로 만들어 놓는다.
C:\java0901\ppt 폴더 내에는 아무 폴더나 아무 파일을 만들어 놓아도 되고 아무것도 생성하지 않아도 된다.
본인은 C:\java0901\ppt 폴더 내에 anybody 폴더(anybody 폴더 내에는 anybody1.txt), someone 폴더(someone 폴더 내에는 아무것도 생성하지 않았다.), ppt1.txt 파일, ppt2.txt 파일을 새로 만들었다.
========================================
프로젝트 내 src 내 javabaisc 패키지 내 Ex15File.java
package javabasic;
import java.io.File;
public class Ex15File {
public static void main(String[] args) {
// TODO Auto-generated method stub
String path = "C:/java0901/";
File file1 = new File(path + "memo.txt");
File file2 = new File(path + "ppt");
File file3 = new File(path + "hello.txt");
System.out.println(file1.isDirectory());// false
System.out.println(file2.isDirectory());// true
System.out.println(file1.isFile());// true
System.out.println(file2.isFile());// false
System.out.println("memo.txt 는 " + file1.length() + "Byte");
System.out.println(file1.exists());// 존재하면 true
System.out.println(file3.exists());// 존재하지 않으므로 false
System.out.println(file1.getAbsolutePath());// 절대경로
System.out.println(file2.getAbsolutePath());// 절대경로
System.out.println(file1.getName());// 파일명만 얻기
System.out.println(file1.canExecute());// true
System.out.println(file1.canRead());// true
System.out.println(file1.canWrite());// true
// D:\\java0901\\memo.txt
// D:/java0901/memo.txt
System.out.println("ppt가 만약 디렉토리라면 목록을 출력하라");
if (file2.isDirectory()) {
String[] list = file2.list();
for (String a : list)
System.out.println(a);
}
System.out.println("파일 삭제하기");
if (file1.exists()) {
file1.delete();
System.out.println("파일1 을 삭제했습니다");
} else {
System.out.println("파일 1은 존재하지 않습니다");
}
if (file3.exists()) {
file3.delete();
System.out.println("파일3 을 삭제했습니다");
} else {
System.out.println("파일 3은 존재하지 않습니다");
}
}
}
false
true
true
false
memo.txt 는 15Byte
true
false
C:\java0901\memo.txt
C:\java0901\ppt
memo.txt
true
true
true
ppt가 만약 디렉토리라면 목록을 출력하라
anybody
ppt1.txt
ppt2.txt
someone
파일 삭제하기
파일1 을 삭제했습니다
파일 3은 존재하지 않습니다
=======================
abstract pathname in Java
>>>
한 파일이나 디렉토리가 시스템에 저장될 때, 그 이름을 나타내는 pathname 문자열은 기계에 종속적이다.
한 abstract pathname 은
Unix 에서으 디스크 드라이브 지정자(지정글자) "/" 나 Windows 에서의 디스크 드라이브 지정자(지정글자) "\\" 같은 선택적인 접두사 문자열과
0개 또는 그 이상 갯수의 문자열로 이루어진 이름의 sequence(연속) 으로
구성된다.
접두사 문자열은 platform에 종속적이다. abstract pathname 에서 맨 마지막 이름은 한 파일이나 한 디렉토리를 나타낸다.
모든 다른 이름들은 디렉토리를 나타낸다.
한 abstract pathname 이 한 pathname 문자열로 변환될 때에는, 각각의 이름이 default(기본적인) 이름 구분자로 의해서 그 다음 이름으로부터 분리된다.
예를 들어, File(String pathname) 은
Windows 플랫폼 상에서는
pathname 문자열인 /Java/myfile.dat 를
abstract pathname 인 \Java\myfile.dat 로 변환시키며,
Linux 플랫폼 위에서는
pathname 문자열인 /Java/myfile.dat 를
abstract pathname 인 /Java/myfile.dat 로 변환시킨다.
=========================
File file1 = new File(path + "memo.txt"); 에서 봤을 때
File 클래스는
파일과 디렉토리 pathname 의 abstract(추상적인) 표현이다.
File 클래스의 인스턴스를 생성하기 위해서는 new 키워드와 함께 File(String pathname) 을 써줘야 한다.
File(String pathname) 은
주어진 pathname 문자열 argument 를 하나으 abstract pathname 으로 변환시키는 것을 이용하여
하나의 새 파일을 생성한다.
즉, File 클래스는 파일과 디렉토리 pathname 을 abstract pathname 으로 표현하는 것인 듯 하다..
그리고 그 변환된 한 abstract pathname, 즉 new File(String pathname) 연산으로 나온 결과가 abstract pathname 인듯 하며, abstract pathname 이 File 클래스의 인스턴스인 어떤 변수에 대입되는 것이다. 예를 들면,
File file1 = new File(path + "memo.txt"); 일 때 new File(path + "memo.txt") 연산으로 나오는 어떤 플랫폼에 종속적인 abstract pathname 이 file1 이라는 변수에 대입이 되는 듯 하다..
그리고 그런 abstract pathname 은 두 가지 성분을 지닌다:
1. UNIX 루트 디렉토리에 쓰는 디스크 드라이브 지정글자인 "/" 나
Microsoft Windows UNC pathname 에서 쓰는 디스크 드라이브 지정글자인 "\\\\" 과 같은
선택적인 시스템-종속적인 접두사와
2. 0개 혹은 그 이상의 문자열이 연속하는 문자열
=====================================
참고로 UNC pathname 에서 UNC path 는 Universal Naming Convention 으로 간단하게 컴퓨터 상에서
공유되는 폴더를 말한다고 한다. 예를 들면, 그런 공유되는 폴더으 목적은 그리하여 당신이 업그레이드를
할 때, 백 오피스와 주요부서가 그 업그레이드 파일이 어디있는지를 아는 것이며 그 업그레이드 파일에 연결할 수 있는
것이라고 한다. 한 UNC path 의 예로는 \\ComputerName\SharedFolder 이다.
(Universal Naming Convention) Unix 공동체에서 만든 기준으로, 이 기준은 네트워크 안에서 서버, 프린터, 그리고 다른
자원을 식별하기 위해 만들어졌다. UNC 경로에서는 컴퓨터이름 앞에 쓰기 위해 두개의 slash 나 두개의 backslash 를
사용한다. 다음 예에서 처럼, 컴퓨터 내에서 그 경로(디스크와 디렉토리들) 는 한개의 slash 나 한개의 backslash 로
나누어진다. DOS/Windows 에서 사용되는 예에서 보이는 것 처럼
드라이브 글자 (c:, d:, 등등.) 가 UNC 이름에서 사용되지 않는다는
것을 주목하자.
//servername/path Unix
\\servername\path DOS/Windows
===============================
boolean java.io.File.isDirectory()
isDirectory() 메서드는
이 abstract 경로이름(File 클래스의 인스턴스로써의 변수) 으로 표시된 파일이 존재하면서 동시에 디렉토리이면
true 를 반환한다; 그렇지 않고 다른 경우라면 false 를 반환한다.
그래서 위의 코드에서
File file2=new File(path+"ppt"); 를 봐본다.
이 때 C:\java0901 폴더 안에 ppt 라는 디렉토리(폴더)를 새로 만들어 놓지 않는다면 존재하지 않기 때문에
file2.isDirectory() 는 false 를 반환한다.
==============================