[JAVA] 파일입출력 스트림

정원석·2023년 8월 30일
0

스트림이란

스트림이란 데이터를 입출력하기 위한 방법인데, 프로그램 언어의 관점에서 보면 프로그램과 로컬 컴퓨터, 또는 분산 컴퓨터 자원의 흐름이라 할 수 있다. 따라서 프로그램에서 스트림을 사용하면 다양한 작업을 할 수 있다. 예를 들어, 프로그램에서 파일을 읽어 온다든지, 콘솔에서 키보드값을 얻오 올 수도 있다. 그리고 객체를 저장하여 프로그램이 종료한 후 다시 시작할 때 재사용할 수도 있다. 네트워크 스트림도 제공하는데, 이는 서로 다른 컴퓨터간의 네트워크 통신을 하여 데이터를 전/수신 할 수 있는 스트림이다.

스트림의 특징

  1. FIFO 구조이다.
  2. 스트림은 단방향이다.
  3. 스트림은 지연될 수 있다.

File 클래스

File 클래스는 로컬에 있는 파일이나 디렉토리 경로를 추상화한 클래스다. 만약 특정 파일의 크기를 알고 싶거나 특정 디렉토리에 어떠한 자식 디렉토리가 있는지 또는 파일이 있는지를 알고 싶다면 File 클래스를 사용하면 된다. File 클래스는 또한 파일의 생성과 삭제, 마지막 수정날짜를 기록하는 등 다양한 기능을 제공한다.

File 클래스의 생성자

java.io 패키지에 있는 File 클래스는 파일과 디렉토리 경로를 관리하는 클래스다.

File(String pathname) 

문자열에 pathname을 가지고 경로를 생성하여 File객체를 생성한다

File(String parent, String child)

Parent와 child 문자열을 연결한 문자열로 경로를 생성하여 File 객체를 생성한다.

File(File parent, String child)

Parent의 파일 객체와 child 문자열로 경로를 생성하여 File 객체를 생성한다.

C 드라이브에 있는 모든 디렉토리와 파일을 표시하고 각각의 파일의 크기 출력

import java.io.*;
public class 예제14_1 { 
    public static void main(String[] args) throws IOException{
        String filePath = "c:\\";
        File f1 = new File(filePath); //File클래스를 이용한 file 객체 생성
        String list[] = f1.list(); //list() 메서드는 C드라이브에 있는 모든 파일과 디렉토리를 String배열로 반환한다.
        for(int i=0 ; i<list.length ; i++){
            File f2 = new File(filePath, list[i]); //
            if(f2.isDirectory()){ //디렉토리면 true, 그렇지 않으면 false
                System.out.printf("%s : 디렉토리 %n", list[i]);
            }else{
                System.out.printf("%s : 파일(%,dbyte)%n" ,
                        list[i], f2.length());
            }
        }
        File f3 = new File("c:\\test.txt");
        System.out.println(f3.createNewFile()); //파일을 새로 생성하면true, 그렇지 않으면 false
        System.out.println(f3.getAbsolutePath()); //파일의 절대경로를 반환
        System.out.println(f3.getCanonicalPath()); //파일의 정규 경로를 반환
        System.out.println(f3.getPath());
        System.out.println(f3.getName()); //파일명을 반환
        System.out.println(f3.getParent()); //
        File f4 = new File("c:\\test.txt");
        File f5 = new File("c:\\test1.txt");
        System.out.println(f4.renameTo(f5)); //dest파일 객체로 이름을 바꾸면 true, 그렇지 않으면 false
    }
}
profile
Back-End-Dev

0개의 댓글