본문 바로가기
JAVA

221027 FIie과 Stream

절대경로 : 루트로부터의 경로
상대경로 : 현재 위치에서의 경로 
상대경로 예
./ :현재 디렉토리. 대부분은 생략해도 됨
../ :상위디렉토리
/ :루트 





파일 입출력, 네트워크 입출력을 할 때는 예외처리(try-catch)를 해주어야 한다.

파일-java.io패키지에 존재하는 시스템에 있는 파일이나 디렉토리를 추상화한 클래스
File클래스를 이용하면 파일의 크기, 생성, 삭제 작업 및 마지막 수정날짜 등 다양한 정보를 알 수 있음

파일 다운로드-있는지 없는지 확인
업데이트-파일 날짜 확인하고 다르면 다운



Stream
1)개요
=>입출력 할 때의 스트림이 있고 람다와스트림에서처럼 여러 개의 데이터를 순차적으로 처리하기 위한 스트림이 있음
=>입출력에서의 스트림은 데이터를 운반하는데 사용하는 연결 통로
 
2)분류
=>입력 스트림과 출력 스트림으로 구분
=>바이트 스트림과 문자 스트림으로 구분
거의 바이트 단위로 사용하는데, 특수한 경우 문자로 읽고 할 때가 있음
일반적인 파일 처리는 바이트 스트림을 사용하고 문자를 읽고 쓰는 경우에만 문자 스트림을 사용합니다.
문자 스트림을 사용할 때는 인코딩에 주의해야 합니다.

ex)채팅은 바이트로도 가능하지만 매번 문자로 형변환을 해야 함. 그럴때 문자 스트림 사용


인코딩-크게 두가지 의미를 가짐.
17을 저장하고자 할 때 컴퓨터는 이진수를 사용하므로 저장 불가. 17을 Memory에 저장할 때 이진수로 변환해서 저장함.
이걸 인코딩이라고 함. 
즉, 어떤 데이터가 Memory에 저장되기 위해 코드로 바꾸는 과정
저장된 데이터를 17로 표현하는 걸 디코딩이라 함.

이 둘을 합친 단어를 코덱이라고 함(코-인코딩의 약자/덱-디코딩의 약자)

문자를 표현하는 게 아스키코드.
한글->가:101 MS에서 정함. cp949 or ms949
web에서도 유사하게 만듦. euc-kr. 국가마다 따로따로 만듦. 
글로벌시대가 열리면서 이게 너무 불편해짐. ->구글이랑 apple이 UTF-8(전세계문자표현)을 만듦. '가'-1001
지금은 웬만하면 UTF-8을 사용하지만 가끔 옛날걸 사용하는 애들은 깨질 때가 있음. 코덱 필요.

인터넷에서 소스코드를 받았는데 한글이 깨지면 인코딩을 해주어야 한다.

windows하고 UTF-8은 가끔 호환이 안될수도있다.
의료IT나 FA(smart factory)는 기본운영체제가 windows임. 옛날꺼라 cp949인 경우가 많다. 
이 분야에서는 인코딩을 꼭 고려해야 한다. 연계시스템이 UTF-8이라고 아무생각없이 만들면 안된다. 

 

File

package java_1027.fileinformation;

import java.io.File;
import java.util.Date;

public class Main {
	public static void main(String[] args) {
		//파일에 대한 정보 확인
		try {
			// File 인스턴스 생성
			//windows에서는 디렉토리 구분 기호가 \인데,
			//프로그래밍 언어에서는 \가 오고 하나의 문자가 오면 제어문자로 인식
			// \를 입력하고자 할 때는 \\로 2번 해야 함. 
			File f = new File("C:\\Users\\user\\Desktop\\수업폴더\\자바 1회차.txt");
			
			//파일의 존재 여부 확인
			System.out.println(f.exists());//있으면 true, 없으면 false
			//마지막 수정 날짜
			System.out.println(f.lastModified());//어떤 숫자가 나옴. 이걸 Date의 객체로 만들면 날짜를 알 수 있다.
			System.out.println(new Date(f.lastModified()));
			
			
		}catch(Exception e){
			System.out.println(e.getLocalizedMessage());
		}

	}
}
true
1663660504830
Tue Sep 20 16:55:04 KST 2022

프로그래밍 언어에서 \뒤에 하나의 문자가 오면 제어문자로 인식한다. 따라서 \를 사용하고자 할 때 는 \\로 표현해줘야 한다.

 

 

'JAVA' 카테고리의 다른 글

221027 Buffering  (0) 2022.10.27
221027 ByteStream-FileOutputStream, FileInputStream  (0) 2022.10.27
221026 Properties  (0) 2022.10.26
221026 Map  (0) 2022.10.26
221026 Set 실습 -ArrayList와 비교  (0) 2022.10.26