File

배지원·2022년 10월 8일
0

JAVA

목록 보기
27/32
  • 파일 또는 폴더에 대한 정보를 제공하는 클래스
  • 정보를 조회하고자 하는 파일이나 폴더의 경로에 대한 문자열을 생성자 파라미터로 전달하는 형태로 만들 수 있다
    File file = new File("C:/photo/food.jpg);		// 객체 생성(1)
    File file = new File("C:/photo", "food.jpg");	// 객체 생성(2)

1. FileReader

  • java.io.InputStreamReader 클래스를 상속 받음
  • InputStreamReader 클래스의 read() 메소드를 사용하여, char를 한 글자씩 읽어올 수 있다
  • FileReader 객체가 생성될 때 파일이 직접 연결되므로 파일이 존재하지 않으면FileNotFoundException 발생 하므로 try-catch 문으로 예외처리를 해줘야 함

read()

  • 텍스트 파일에서 한 글자씩 글자를 읽어서, 하나의 char를 리턴한다. 더 이상 읽을 글자가 없으면 -1을 리턴하고 반복문을 종료한다.

(1) 파일로부터 한글자 읽기 예제

import java.io.FileReader;
import java.io.IOException; 

public class ReadFile {    
		public static void main(String[] args) throws IOException {         
				FileReader reader = new FileReader("D:\\file.txt");   // 객체 생성     
				
				    System.out.println(char)reader.read());  // 한글자씩 읽음
		}
}
// 출력 결과
file.txt 폴더 안 내용 : hello
1회차 결과 : h
2회차 결과 : e

2. BufferedReader

  • 버퍼는 바이트 배열로, 여러 바이트를 저장하여 한 번에 많은 양의 데이터를 입출력할 수 있도록 도와주는 임시 저장소
  • 버퍼를 이용해서 FileReader보다 더 효율적임
  • BufferedReader + FileReader를 혼합해서 사용하는게 파일 읽는데 속도가 더 빠름

readLine()

  • 텍스트 파일을 한 줄씩 읽어서 리턴한다. 더 이상 읽을 내용이 없으면, null 리턴.

(1) 파일로부터 한 줄씩 전체 읽기 예제

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
public class ReadFile {    
		public static void main(String[] args) throws IOException {         

				BufferedReader reader = new BufferedReader(            
						new FileReader("d:\\file.txt"),
                        16 * 1024
				);    // readLine()을 사용하기 위해 BufferReader 클래스 사용
                	  // 파일을 읽어오기 위해 FileReader()클래스를 통해 객체 생성
     				  // 버퍼 사이즈를 16KB로 생성
                      
				String str;        
				while ((str = reader.readLine()) != null) {  // 파일의 데이터가 없을때 까지 반복          
						System.out.println(str);        
				}         
				reader.close();            
		}
}
// 출력 결과
hello
how are you
nice to meet you

3. FileWriter

  • FileWriter 를 생성하면서 지정된 파일이 이미 있을 경우 그 파일을 덮어쓰게 되어(기본값) 기존의 파일 내용은 없어진다.
  • 두번째 인자로 boolean 타입을 받는데, 이는 파일에 내용을 이어붙혀서 작성할지 처음부터 덮어씌워서 작성할지 여부를 결정한다. 기존 파일 내용 끝에 데이터를 추가할 경우 두번 째 매개값에 true 를 주면 된다.
    FileWriter fw = new FileWriter("파일경로", true);

4. BufferedWriter

  • 버퍼를 이용해서 입출력의 효율을 높일 수 있도록 해주는 역할
  • 버퍼를 이용하면 입출력의 효울이 비교할 수 없을 정도로 좋아짐
  • BufferedWriter + FileWriter를 혼합해서 사용하는게 파일 기록하는데 속도가 더 빠름
  • BufferedWriter를 사용하고 난 후에는 꼭!!! 버퍼의 남은 데이와 스트림을 종료 시켜야함

    flush( )
    - 버퍼의 남은 데이터를 모두 사용
    close( )
    - 스트림 종료

(1) 파일로부터 한 줄씩 전체 읽기 예제

public class FileWriterTest {
    public static void main(String[] args) throws IOException{
        String filePath = "D:/MyWork/Test.txt";

        File file = new File(filePath); // File객체 생성
        if(!file.exists()){ // 파일이 존재하지 않으면
            file.createNewFile(); // 파일 신규 생성
        }

        // BufferedWriter 생성
        BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));

        // 파일에 쓰기
        writer.write("하이루!");
        writer.newLine();
        writer.write("반가워!");
        writer.newLine();

        // 버퍼 및 스트림 뒷정리
        writer.flush(); // 버퍼의 남은 데이터를 모두 쓰기
        writer.close(); // 스트림 종료
    }
}
profile
Web Developer

0개의 댓글