본문 바로가기

언어/Java

메타클래스, File 정보 가져오기

※ 메타클래스(메타정보를 갖는 클래스, 정보를 담고 있는 클래스, 실행이나 객체생성 용도 X)
    java.lang.Object - 객체정보를 갖고있는 클래스
    java.lang.Class - 클래스정보를 갖고있는 클래스
    java.io.File - 파일정보를 갖고있는 클래스

public class FileTest {
	public static void main(String[] args) {
		File f;
		f = new File("D:\\");
		if(f.isDirectory()) { // if(f.isDirectory()==true) { 같은말
			String[] list = f.list();
//			f.list = f.list Directory가 가지고 있는 파일명, 하위 디렉토리명 배열로 반환
			for(String sub:list) {
				System.out.println(sub);
			}
		}
	}
}

 

결과

public class FileTest {
	public static void main(String[] args) {
		File f;
		f = new File("D:\\");
		if(f.isDirectory()) { // if(f.isDirectory()==true) { 같은말
			File[] files = f.listFiles();
			for(File file:files) {
				String name = file.getName();
				if(file.isFile()) {	// d:\\의 하위파일
					long fileSize = file.length();
					long lastModifiedTime = file.lastModified();	
                    // 파일을 사용한 최종 사용시간
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm");
					String formatStr = sdf.format(new Date(lastModifiedTime));
					System.out.println(name + "\t" + formatStr + "\t" + fileSize);	
                    //	\t 탭크기
				} else { // d:\\의 하위폴더
					System.out.println("[" + name + "]");
				}
			}
		}

결과

public class FileTest {
	public static void main(String[] args) {
		String folder = "D:\\attache";
		File file = new File(folder);
		if(!file.exists()) {	// 폴더의 유무 확인, =if(file.exists() == false){
			boolean result = file.mkdir();
			if(result) {
				System.out.println(folder + "폴더가 생성되었습니다");
			} else {
				System.out.println(folder + "폴더가 생성 안되었습니다");
			}
		} else {
			System.out.println(folder + "폴더가 이미 존재합니다");
		}
		
		String fileName = "a.txt";
		File file1 = new File(file, fileName);
		try {
			if(!file1.exists()) {
				file1.createNewFile();	// 0kb의 파일이 만들어지기만 함
				System.out.println(fileName + "파일이 생성되었습니다");
			} else {
				System.out.println(fileName + "파일이 이미 존재합니다");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

결과

 

쓴 순서대로 읽기도 읽어야함. 쓴 형태랑 읽기 형태 다르면 못읽음. 데이터 타입별로 읽고 쓰기 해야함

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataIOTest {
	public static void write() {
		/*
		 * 스트림: 바이트단위 출력스트림
		 * 필터스트림 : 데이터타입단위 출력스트림
		 * 목적지 : 파일
		 */
		String fileName = "a.dat";	// 상대경로
		FileOutputStream fos = null;
		DataOutputStream dos = null;
		try {
			fos = new FileOutputStream(fileName);
			dos = new DataOutputStream(fos);
			dos.writeInt(1);	
			dos.writeFloat(2.3F);	
			dos.writeBoolean(false);	//
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(dos != null) {
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	public static void read() {
		/*
		 * 스트림: 바이트입력스트림
		 * 필터스트림: 데이터타입단위 입력스트림
		 * 자원 : 파일
		 */
		String fileName = "a.dat"; // 상대경로
		
		FileInputStream fis = null;
		DataInputStream dis = null;
		try {
			fis = new FileInputStream(fileName);
			dis = new DataInputStream(fis);
			int i = dis.readInt();
			float f = dis.readFloat();
			boolean b = dis.readBoolean();
			System.out.println(i + ":" + f + ":" + b);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(dis != null) {
				try {
					dis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	public static void main(String[] args) {
		write();
		read();
	}	
}

결과
결과

※"a.dat";의 경로

: 현재 oop부터(프로젝트 경로)

oop> java -cp bin  DataIOTest
확인불가

'언어 > Java' 카테고리의 다른 글

필터스트림, 직렬화 예시  (0) 2023.08.09
필터스트림, 객체직렬화  (0) 2023.08.09
FileCopy 예제  (0) 2023.08.09
입출력 스트림 예시  (0) 2023.08.09
프린트 스트림, System.in 예시  (0) 2023.08.09