[Java] 2020.12.01. day_28 File class, File 조작, File Stream
2020. 12. 1. 17:10ㆍWeb_Back-end/Java SE
○ 입력근원이 HDD에 존재하는 File일 때
- | 입력근원이 HDD에 존재하는 File일 때 |
8bit Stream | FileInputStream - 모든 파일을 읽어들일 수 있다(파일복사) |
16bit Stream | FileReader - 독자 포멧을 사용하지 않는 텍스트파일을 읽어들일 때 |
○ File
- | File 클래스 |
- | java.io 패키지에서 제공 |
파일의 정보를 얻을 때 사용 | |
파일을 삭제하거나, 이름을 변경할 수 있다 | |
사용법 | |
1. 생성 | File file = new File("경로"); //경로 : 절대경로 |
2. method 호출 | 파일이 존재 : file.exists() //boolean으로 반환 |
파일의 크기 : file.length() //byte단위로 반환 | |
파일의 절대경로 : file.getAbsolutePath() C:\dev\temp\java_read.txt c:\dev\temp\java_read.txt //대소문자 모두 가능 |
|
파일의 규범경로 : OS에서 파일에 접근할 수 있는 단하나의 유일한 경로 file.getCannonicalPath() |
|
파일 경로 : file.getPath() | |
파일 디렉토리 : file.getParent() | |
파일명 : file.getName() | |
파일인지? : file.isFile() 폴더인지? : file.isDirectory() //폴더 : 파일을 저장한 파일 숨김파일? : file.isHidden() |
|
실행가능 : file.canExecute() 읽기가능 : file.canRead() 쓰기가능 : file.canWrite() |
|
조작 | |
폴더생성 (파일은 생성할 수 없다 : 출력스트림 사용) |
1. 파일클래스 생성 File file = new File("생성할 폴더명"); File file = new File("c:/dev/test"); 2.디렉토리생성 file.mkdir(); //하위폴더가 없는 하나의 폴더를 생성 file.mkdirs(); //여러 폴더를 동시 생성 |
파일삭제 | 1. 삭제할 파일경로를 가진 File 클래스를 생성 File file = new File("삭제할파일의 경로"); 2. 파일 삭제 file.delete(); |
파일명 변경 | file.renameTo(변경할이름을 가진 파일객체) |
◎ File Stream 사용
File Stream 사용 | ||
파일 - HDD 에 존재 |
FileInputStream | FileReader |
JVM - memory에 존재 |
![]() java_read.txt |
try{ // 1. 읽어들일 파일에 스트림을 연결 FileInputStream fis = new FileInputStream(new File("c:/dev/temp/java_read.txt"); // 2. 파일의 내용을 읽기 fis.read(); //read() : 가장처음 1byte를 읽어들인다 }catch(FileNotFoundException fnfe){ fnfe.printStackTrace(); }catch(IOException ie){ ie.printStackTrace(); } |
|
read() : 가장처음 1byte를 읽어들인다 읽어들인 내용이 없다면 -1 반환 |
◎ File Reader 사용
File Reader 사용 | ||
파일 - HDD 에 존재 |
FileReader | ButterdReader FileReader : HDD에 존재하는 파일과 연결 BufferdReader : 스트림으로 연결된 곳에서 줄 단위로 읽는 일 |
JVM - memory에 존재 |
![]() java_read.txt |
try{ // 1. 읽어들일 파일에 스트림을 연결 FileReader fr = new FileReader(new File("c:/dev/temp/java_read.txt"); //2. 줄 단위로 읽어들이기 위한 스트림 연결 BufferedReader br = new BufferedReader( fr ); //3. 줄단위 (\n)로 읽기 String str = br.readLine() //읽어들인 내용이 없다면 null이 나온다 //4. 모든 줄 읽기 String str = ""; while( (str=br.readLine()) != null ){ } |
◎ 읽어들인 파일의 한글 Charset과 Java의 한글 Charset이 다를 때 처리
읽어들인 파일의 한글 Charset과 Java의 한글 Charset이 다를 때 처리 |
||
파일 - HDD 에 존재 |
FileInputStream | BufferedReader |InputStreamReader FileInputStream: HDD에 존재하는 파일과 연결 BufferedReader : 스트림으로 연결된 곳에서 줄 단위로 읽는 일 + InputStreamReader : - 8bit, 16bit stream연결 - Charset을 변경하는 일 (encoding) |
JVM - memory에 존재 |
![]() java_read.txt |
try{ // 1. 읽어들일 파일에 스트림을 연결 FileInputStream fis = new FileInputStream(new File("c:/dev/temp/java_read.txt"); //2. 8bit, 16bit stream을 연결하면서, //Charset을 Encoding하는 기능 스트림을 사용 //Encoding의 Charset은 원본파일의 Charset으로 설정 InpuStreamReader isr = new InputStreamReader(fis, "Charset"); //Charset : ex) MS949, UTF-8 ,,, //3. 줄 단위로 읽어들이기 위한 스트림 연결 BufferedReader br = new BufferedReader( isr ); //4. 줄단위 (\n)로 읽기 String str = br.readLine() //읽어들인 내용이 없다면 null이 나온다 //5. 모든 줄 읽기 String str = ""; while( (str=br.readLine()) != null ){ } |