메뉴 건너뛰기

2016.09.13 18:46

File 클래스

조회 수 3603 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

File 클래스


자바에서는 File 클래스를 통해서 파일과 디렉터리를 다룰 수 있도록 하고 있다. 그래서 File 인스턴스는 파일 일 수도 있고 디렉터리 일 수도 있다.


1. File 클래스 API


- 경로와 관련된 File의 멤버변수

 멤버변수

 설명

 static String pathSeparator

 OS에서 사용하는 경로 구분자. 윈도우";", 유닉스":"

 static char pathSeparatorChar

 OS에서 사용하는 경로 구분자. 윈도우';', 유닉스':'

 static String separator

 OS에서 사용하는 이름 구분자. 윈도우"\", 유닉스"/"

 static char separatorChar

 OS에서 사용하는 이름 구분자. 윈도우'\', 유닉스'/'


import java.io.*;


class FileEx1

{

public static void main(String[] args) throws IOException

{

File f = new File("c:\\jdk1.5\\work\\ch14\\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.getParent());

System.out.println();

System.out.println("File.pathSeparator - " + File.pathSeparator); // 파일 전체 path 구분자. ;

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"));

}

}

실행결과)

경로를 제외한 파일이름 - FileEx1.java

확장자를 제외한 파일이름 - FileEx1

확장자 - java

경로를 포함한 파일이름 - c:\jdk1.5\work\ch14\FileEx1.java

파일의 절대경로        - c:\jdk1.5\work\ch14\FileEx1.java

파일이 속해 있는 디렉토리 - c:\jdk1.5\work\ch14


File.pathSeparator - ;

File.pathSeparatorChar - ;

File.separator - \

File.separatorChar - \


user.dir=E:\Eclipse_Source\JAVA\My_Lib

sun.boot.class.path=C:\Program Files (x86)\Java\jre6\lib\resources.jar;C:\Program Files (x86)\Java\jre6\lib\rt.jar;C:\Program Files (x86)\Java\jre6\lib\sunrsasign.jar;C:\Program Files (x86)\Java\jre6\lib\jsse.jar;C:\Program Files (x86)\Java\jre6\lib\jce.jar;C:\Program Files (x86)\Java\jre6\lib\charsets.jar;C:\Program Files (x86)\Java\jre6\lib\modules\jdk.boot.jar;C:\Program Files (x86)\Java\jre6\classes


File 인스턴스를 생성하고 메서드를 이용해서 파일의 경로와 구분자 등의 정보를 출력하는 예제이다.

cp.) OS의 시스템 변수로 설정하는 classpath외에 sun.boot.class.path라는 시스템속성에 기본적인 classpath가 있어서 기본적인 경로들은 이미 설정되어 있다. 

그리고 한가지 더 알아 둘 것은 File 인스턴스를 생성했다고 해서 파일이나 디렉터리가 생성되는 것은 아니라는 것이다.

파일명이나 디렉터리명으로 지정된 문자열이 유효하지 않더라도 컴파일 에러나 예외를 발생시키지 않는다.

새로운 파일을 생성하기 위해서는 File 인스턴스를 생성한 다음, 출력스트림을 생성하거나 createNewFile()을 호출해야 한다.


1 이미 존재하는 파일을 참조할 때

File f = new File("c:\\jdk\\work\\ch14", "File1.java");


2. 기존에는 없는 파일을 새로 생성할 때

File f = new File("c:\\jdk\\work\\ch14", "File2.java");

f. createNewFile(); //새로운 파일이 생성된다.


(1) 예제1

1) File 클래스

File(.txt)가 자바 프로그래밍에서 사용되기 위해서는 객체로 되어있어야 사용할수 있다.

--> File클래스가 파일을 자바 프로그램의 객체로 변환시켜준다.

 Exam_01.java 파일 자바에서 사용하기 위한 객체화 작업

import java.io.File;


public class Exam_02 {

public static void main(String[] ar) {

File f = new File("Exam_01.java");// 존재하든 관계없이 파일 객체 생성 가능

File f1 = new File("Exam_03.java");// 존재 안하든 관계없이 파일 객체 생성 가능

File f2 = new File("C:" + File.separator + "test" + File.separator + "lecture\\Exam_02.java");

File dir = new File("E:\\Eclipse_Source\\JAVA\\Java_KSH\\io");

File f3 = new File(dir, "Exam_04.java");

File f4 = new File("E:\\Eclipse_Source\\JAVA\\Java_KSH\\io", "Exam_05.java");

}

}


2) 예제2

import java.io.File;

import java.util.Date;


public class Exam_04 {

public static void main(String[] ar) {

File f = new File("aaa");

// 폴더 만들기

f.mkdir();

File ff = new File("bbb/ccc/ddd/eee");

// 복수의 폴더 만들기

ff.mkdirs();

//File fff = new File("Exam_01");

// 수정일자 변경

f.setLastModified(new Date().getTime());

f.setReadOnly();

//ff.setLastModified(new Date().getTime());

}

}


3) 예제3

import java.io.File;

import java.io.FileDescriptor;

import java.io.FileOutputStream;

import java.io.IOException;


public class Exam_05 {

public static void main(String[] ar) throws IOException {

// 출력 객체 만들기, FileDescriptor.out: 콘솔에 출력하기

FileOutputStream fos1 = new FileOutputStream(FileDescriptor.out);// 파일 객체, network 객체

File f = new File("C:\\test\\aaa.txt");

// 두번째 매개변수에 true면 덮어쓰기 하지 않고 내용이 추가된다.

FileOutputStream fos2 = new FileOutputStream(f, true);

byte[] by = new byte[]{'H', 'e', 'l', 'l', 'o', ' ', 'J', 'a', 'v', 'a'};


fos1.write(by, 6,4); 

// index[6]에서 부터 4번째 문자열 출력

fos2.write(by);

fos1.write(65);

fos1.close();

fos2.close();

}

}


4) 예제4

import java.io.BufferedInputStream;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;


public class Exam_08 {

public static void main(String[] ar) throws IOException {

File f = new File("C://test/bbb.txt");

FileInputStream fis = new FileInputStream(f);

BufferedInputStream bis = new BufferedInputStream(fis, 1024);

DataInputStream dis = new DataInputStream(bis);

while(true) {

int x = dis.read();

if(x == -1) break;

System.out.print(x);

}

dis.close();

}

}


5) 예제5
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class Exam_09 {
public static void main(String[] ar) throws IOException {
//System.out.println("test 안녕하세요...");
//FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
// 출력 대상은 콘솔뿐만 아니라 웹, 서블릿, jsp에서 출력할 수 있는 객체가 OutputStreamWriter이다.
OutputStreamWriter osw = new OutputStreamWriter(System.out);
BufferedWriter bw = new BufferedWriter(osw, 1024);
// write 뿐만 아니라 다양한 메서드 사용할 수 있다.
PrintWriter pw = new PrintWriter(bw);
File f = new File("C://test/ccc.txt");
// 출력대상이 파일이다, 출력은 파일이 자동 생성되어 출력이 된다.
FileWriter fw = new FileWriter(f);
BufferedWriter bw1 = new BufferedWriter(fw, 1024);
PrintWriter pw1 = new PrintWriter(bw1);
pw.println(10);
pw.println("test 안녕하세요!");
pw1.println(10);
pw1.println("test 안녕하세요!");
pw.close();
pw1.close();
}
}


6) ★ 예제6★ 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Exam_10 {

public static void main(String[] ar) throws IOException {

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);

// 한줄로 요약

//BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

File f = new File("C://test/ccc.txt");

FileReader fr = new FileReader(f);

BufferedReader br1 = new BufferedReader(fr);

System.out.print("문자열 = ");

String str = br.readLine();

System.out.println("str = " + str);

System.out.print("숫자 = ");

int x = Integer.parseInt(br.readLine());

System.out.println("x = " + x);

System.out.println("==================================");

while(true) {

// 개행하며 한 줄씩 읽어들이기

String s = br1.readLine();

if(s == null) break;

System.out.println("s = " + s);

}

br.close();

br1.close();

}

}



List of Articles
번호 제목 날짜 조회 수
151 JSP, Spring, GMail 메일발송 간단 예제 2016.09.12 32791
150 JQuery 자동완성 플러그인 JSDT설치 file 2016.09.19 8896
149 전자정부 프레임워크란? file 2016.09.19 8342
148 파일 읽고쓰는 암호화/복호화 2016.09.21 7385
147 웹브라우저(크롬) 설정하여 웹을 실행해 보자 file 2016.09.19 7204
146 회원가입 폼(form)으로 보는 Validator 구현하는 방법 file 2016.08.29 7108
145 전자정부표준프레임워크 - 설치 file 2016.09.02 6277
144 기본적인 스크립트 보안 2019.01.16 6044
143 eclipse 콘솔(로그)에 디버그(Debug) 모드에서 실행된 쿼리문을 보여주자. - 전자정부프레임워크 오라클 file 2016.08.29 5999
142 공통컴포넌트 생성하기 - 게시판 file 2016.09.19 5754
141 회원가입 양식에서 (필수/옵션)필드 추가/제거하기 file 2016.08.29 5333
140 날짜 시간 포맷 제어 자바 클래스 : JAVA DateUtils Date time file 2016.12.09 5233
139 스프링(Spring)의 Validator 기능을 사용하다가 '정의되지 않음 또는 null 참조인 'type' 속성을 가져올 수 없습니다.'라는 오류를 만났을 때 해결방법 file 2016.08.29 5165
138 System.out.println(); 이클립스에서 자동화기능 사용 file 2016.09.19 5155
137 접근 제한자 private/ protected/ public / default file 2016.10.06 5136
136 전자정부프레임워크 v2.5, v2.6 오라클 세팅하기 file 2016.09.12 5109
135 예외 만들기 2016.09.13 4961
134 MySQL에 All-in-one 설치시 webmaster로 로그인 안되는 문제 해결을 위한 2가지 수정사항 file 2016.08.29 4953
133 다양한 문자 조합을 이용한 카운팅 구하기 2016.12.09 4941
132 자바 XML 제어 라이브러리 XStream : JAVA 2016.12.09 4917
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved