파일 I/O(입출력)은 컴퓨터 프로그램이 데이터를 파일에서 읽어오거나 파일에 쓰는 작업을 수행하는 프로세스를 가리킨다. 파일 I/O는 컴퓨터에서 데이터의 영구적인 저장과 관리를 가능하게 하며, 프로그램이 데이터를 유지하고 다시 사용할 수 있도록 한다. 이것은 파일을 텍스트 또는 이진 형식으로 읽고 쓸 수 있게 해주며, 데이터베이스와 같은 영구 저장소에 접근할 수 없을 때 매우 유용하다.
파일 I/O는 다음과 같은 주요 개념과 작업을 포함한다.
파일: 파일은 데이터를 저장하는 물리적 또는 논리적인 단위이다. 파일은 텍스트 파일(인간이 읽을 수 있는 텍스트) 또는 이진 파일(바이너리 데이터)일 수 있다.
파일 열기: 파일 I/O 작업을 시작하려면 파일을 열어야 한다. 파일 열기는 읽기 모드(Read) 또는 쓰기 모드(Write)로 수행된다. 또한 파일을 추가 모드(Append)로 열어 기존 내용을 유지한 채 데이터를 추가할 수 있다.
파일 읽기: 열린 파일에서 데이터를 읽는다. 텍스트 파일의 경우 한 줄씩 또는 전체 내용을 읽을 수 있고, 이진 파일의 경우 바이트 단위로 읽을 수 있다.
파일 쓰기: 데이터를 파일에 쓰는 작업이다. 텍스트 또는 이진 데이터를 파일에 쓸 수 있다.
파일 닫기: 파일을 사용한 후에는 파일을 닫아야 한다. 파일을 닫는 것은 메모리 누수를 방지하고 다른 프로세스가 파일을 사용할 수 있도록 한다.
예외 처리: 파일 I/O 작업은 실패할 수 있으므로 예외 처리를 통해 오류를 처리해야 합니다. 파일을 열 때, 읽을 때, 쓸 때, 닫을 때 예외가 발생할 수 있다.
경로와 파일명: 파일을 찾기 위해 정확한 경로와 파일명을 지정해야 한다. 이것은 파일을 식별하는 주소 역할을 한다.
파일 I/O는 프로그래밍 언어에 따라 구현 방법이 다를 수 있지만, 기본적인 개념은 유사하다. 프로그램에서 파일을 다루는 데 필요한 파일 열기, 읽기, 쓰기 및 닫기 작업을 숙지하고 파일 I/O 작업을 안전하게 처리하는 것이 중요하다.
파이썬에서 파일 I/O는 내장된 파일 객체를 사용하여 수행된다.
주요 함수와 메서드에는 다음과 같다.
open()
함수: 파일을 열고 파일 객체를 생성한다.read()
및 write()
메서드: 파일에서 읽기 및 파일에 쓰기 작업을 수행한다.close()
메서드: 파일을 닫아 메모리 누수를 방지한다.try:
# 파일 읽기
with open('파일경로', 'r') as file:
data = file.read()
print(data)
print('파일저장')
f2 = open(r'파일경로',mode='w',encoding='utf-8')
f2.write('aaaa \n')
f2.write('bbbb\n')
f2.close()
print('저장 성공')
print('파일추가') # 파일없으면 파일 만들기
f2 = open(r'파일경로',mode='a',encoding='utf-8')
f2.write('a \n')
f2.write('b \n')
f2.write('c \n')
f2.close()
print('추가 성공')
print('저장된 파일 읽기')
f3 = open(r'파일경로',mode='r',encoding='utf-8')
print(f3.readline())
print(f3.readline(1),f3.readline(2)) # 한 행의 부분 문자 읽기
lines = f3.readlines()
print(lines) # 모든 행을 읽어 list 타입으로 저장
f3.close()
except IOError as e:
print("파일을 읽을 수 없습니다:", e)
자바에서 파일 I/O는 java.io
패키지를 사용하여 수행된다.
주요 클래스 및 메서드에는 다음과 같다.
File
클래스: 파일 및 디렉토리를 나타내는 객체를 생성하고 관리한다.FileInputStream
및 FileOutputStream
: 이진 파일을 읽고 쓰기 위한 스트림 클래스이다.FileReader
및 FileWriter
: 텍스트 파일을 읽고 쓰기 위한 스트림 클래스이다.BufferedReader
및 BufferedWriter
: 버퍼링을 사용하여 파일에서 빠르게 읽고 쓸 수 있는 스트림 클래스이다.import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileIOExample {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new FileReader("파일경로"));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}