Rust 표준 라이브러리는 파일을 읽고 쓰기 위한 수많은 모듈과 메서드를 제공합니다.
Rust 언어는 File 구조를 사용하여 파일을 설명/표시합니다.
File 구조에는 프로그램이 파일에 대해 수행할 수 있는 특정 작업과 사용 가능한 작업 방법을 나타내는 데 사용되는 관련 멤버 변수 또는 함수가 있습니다.
File 구조 의 모든 작업 메서드는 Result 열거형을 반환합니다 .
다음 표에는 일반적으로 사용되는 파일 읽기 및 쓰기 방법이 나열되어 있습니다.
기준 코드 | 메소드 | 설명 |
std::fs::File | open() / pub fn open(path: P) -> Result | 읽기 전용 모드로 파일을 여는 정적 메서드 |
std::fs::File | create() / pub fn create(path: P) -> Result | 쓰기 가능 모드로 파일을 여는 정적 메서드입니다. 파일이 존재하는 경우 이전 내용을 지우십시오. 파일이 없으면 새 파일을 만듭니다. |
std::fs::remove_file | remove_file() / pub fn remove_file(path: P) -> Result<()> | 파일 시스템에서 파일 삭제 |
std::fs::OpenOptions | append() / pub fn append(&mut self, append: bool) -> &mut OpenOptions | 추가할 파일 모드 설정 |
std::io::Writes | write_all() / fn write_all(&mut self, buf: &[u8]) -> Result<()> | buf의 모든 내용을 출력 스트림에 씁니다. |
std::io::Read | read_to_string() / fn read_to_string(&mut self, buf: &mut String) -> Result | 모든 내용을 읽고 문자열로 변환하여 buf에 추가합니다. |
Rust 표준 라이브러리의 std::fs::File 모듈은 파일을 열고 파일 핸들을 반환하기 위한 정적 메서드 open()을 제공합니다.
open() 함수의 프로토타입은 다음과 같습니다.
open() 함수는 읽기 전용 모드로 기존 파일을 여는 데 사용됩니다. 파일이 존재하지 않으면 오류가 발생합니다. 파일을 읽을 수 없는 경우에도 오류가 발생합니다.
다음 예에서는 open()을 사용하여 현재 디렉터리에 있는 파일을 엽니다. 따라서 오류가 발생하지 않습니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
data.txt 파일이 없으면 다음 오류가 발생합니다.
Rust 표준 라이브러리의 std::fs::File 모듈은 파일을 생성하고 생성된 파일 핸들을 반환하기 위한 정적 메서드 create()를 제공합니다.
create() 함수의 프로토타입은 다음과 같습니다.
create() 함수는 파일을 생성하고 생성된 파일 핸들을 반환합니다. 파일이 이미 존재하는 경우 내부적으로 open()이 호출되어 파일을 엽니다. 예를 들어 디렉터리에 쓸 수 없는 등 생성이 실패하면 오류가 발생합니다.
다음 코드는 create() 함수를 사용하여 data.txt 파일을 생성합니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Rust 언어 표준 라이브러리 std::io::Writes는 출력 스트림에 콘텐츠를 쓰기 위한 write_all() 함수를 제공합니다.
파일 스트림도 출력 스트림의 한 유형이기 때문에 이 함수를 사용하여 파일에 콘텐츠를 쓸 수도 있습니다.
write_all() 함수는 std::io::Writes 모듈에 정의되어 있으며 해당 함수 프로토타입은 다음과 같습니다.
write_all()은 buf의 내용을 현재 스트림에 쓰는 데 사용됩니다. 쓰기가 성공하면 쓰여진 바이트 수를 반환하고, 쓰기가 실패하면 오류를 발생시킵니다.
다음 코드에서는 write_all() 메서드를 사용하여 data.txt 파일에 일부 내용을 씁니다.
위의 Rust 예제를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
참고: write_all() 메서드는 쓰기 후에 자동으로 개행 문자를\n 쓰지 않습니다.
Rust에서 콘텐츠를 읽는 일반적인 단계는 다음과 같습니다.
이전에 open() 함수에 대해 소개한 적이 있습니다. 이번에는 read_to_string() 함수에 대해 주로 이야기하겠습니다.
read_to_string() 함수는 파일에서 나머지 모든 내용을 읽고 이를 문자열로 변환하는 데 사용됩니다.
read_to_string() 함수의 프로토타입은 다음과 같습니다
read_to_string() 함수는 파일의 모든 내용을 읽고 버퍼에 추가하는 데 사용됩니다. 읽기에 성공하면 읽은 바이트 수를 반환합니다.
먼저 현재 디렉터리에 data.txt라는 새 파일을 만들고 다음 내용을 작성합니다.
그런 다음 read_to_string 함수를 사용하여 파일에서 내용을 읽는 작은 예제를 작성합니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Rust 코어와 표준 라이브러리는 파일 끝에 콘텐츠를 추가하는 직접적인 기능을 제공하지 않습니다.
그러나 파일의 열기 모드를 추가로 설정하기 위해append() 함수가 제공됩니다.
파일 모드가 추가로 설정된 경우 파일에 기록된 콘텐츠는 원래 이전 콘텐츠를 대체하지 않고 이전 콘텐츠 뒤에 배치됩니다.
add() 함수는 std::fs::OpenOptions 모듈에 정의되어 있으며 해당 함수 프로토타입은 다음과 같습니다.
다음 예제에서는 Append() 메서드를 사용하여 파일 열기 모드를 추가로 변경합니다.
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
data.txt 파일을 열면 다음 내용을 볼 수 있습니다.
Rust 표준 라이브러리 std::fs는 파일 삭제를 위한 Remove_file() 함수를 제공합니다.
Remove_file() 함수의 프로토타입은 다음과 같습니다.
삭제에 실패할 수 있으며, 반환 결과가 양호하더라도 즉시 삭제되지 않을 수 있으니 주의하시기 바랍니다.
아래 코드에서는 Remove_file() 메서드를 사용하여 data.txt를 삭제합니다.
Expect() 메소드는 삭제 오류가 발생할 때 사용자 정의 오류 메시지를 출력하는 데 사용됩니다.
위의 예제를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
현재 디렉터리를 열면 파일이 삭제된 것을 확인할 수 있습니다.
Rust 표준 라이브러리는 파일을 새 파일로 복사하는 기능을 제공하지 않습니다.
그러나 위에서 언급한 기능과 방법을 사용하여 파일 복사 기능을 실현할 수 있습니다.
아래 코드에서는 복사 명령의 간단한 버전을 모방합니다.
구체적인 Rust 코드는 다음과 같습니다
먼저 위의 코드를 컴파일하세요.
그런 다음 다음 명령을 사용하여 실행하십시오.
윈도우 컴퓨터
리눅스/맥 컴퓨터
data.txt는 복사하려는 원본 파일 경로입니다. data_new.txt는 원하는 새 파일 경로입니다.
25. Rust Cargo 패키지 관리자 (0) | 2024.12.22 |
---|---|
23. Rust IO (0) | 2024.12.21 |
22. Rust 제네릭 (0) | 2024.12.21 |
21. Rust 오류 처리 (0) | 2024.12.21 |
20. Rust 컬렉션 (0) | 2024.12.14 |