Elixir-파일 IO

파일 IO는 언어가 파일 시스템의 파일과 상호 작용할 수 있도록하므로 모든 프로그래밍 언어의 필수 부분입니다. 이 장에서는 경로와 파일이라는 두 모듈에 대해 설명합니다.

경로 모듈

그만큼 path모듈은 파일 시스템 작업을위한 도우미 모듈로 간주 할 수있는 매우 작은 모듈입니다. 파일 모듈에있는 대부분의 함수는 경로를 인수로 예상합니다. 가장 일반적으로 이러한 경로는 일반 바이너리입니다. 경로 모듈은 이러한 경로로 작업하기위한 기능을 제공합니다. 경로 모듈이 다른 운영 체제를 투명하게 처리하므로 바이너리를 조작하는 대신 경로 모듈의 함수를 사용하는 것이 좋습니다. Elixir는 Windows에서 파일 작업을 수행 할 때 자동으로 슬래시 (/)를 백 슬래시 (\)로 변환합니다.

Path 모듈을 더 이해하기 위해 다음 예제를 살펴 보겠습니다.

IO.puts(Path.join("foo", "bar"))

위의 프로그램이 실행되면 다음과 같은 결과가 생성됩니다.

foo/bar

경로 모듈이 제공하는 많은 방법이 있습니다. 여기 에서 다른 방법을 볼 수 있습니다 . 이러한 방법은 많은 파일 조작 작업을 수행하는 경우 자주 사용됩니다.

파일 모듈

파일 모듈에는 파일을 IO 장치로 열 수있는 기능이 포함되어 있습니다. 기본적으로 파일은 바이너리 모드로 열리므로 개발자가 특정IO.binreadIO.binwriteIO 모듈의 기능. 다음과 같은 파일을 생성하겠습니다.newfile 데이터를 씁니다.

{:ok, file} = File.read("newfile", [:write]) 
# Pattern matching to store returned stream
IO.binwrite(file, "This will be written to the file")

방금 쓴 파일을 열면 내용이 다음과 같이 표시됩니다.

This will be written to the file

이제 파일 모듈을 사용하는 방법을 이해하겠습니다.

파일 열기

파일을 열려면 다음 두 가지 기능 중 하나를 사용할 수 있습니다.

{:ok, file} = File.open("newfile")
file = File.open!("newfile")

이제 차이점을 이해합시다. File.open 기능과 File.open!() 함수.

  • 그만큼 File.open함수는 항상 튜플을 반환합니다. 파일이 성공적으로 열리면 튜플의 첫 번째 값을 다음과 같이 반환합니다.:ok두 번째 값은 io_device 유형의 리터럴입니다. 오류가 발생하면 첫 번째 값이있는 튜플을 다음과 같이 반환합니다.:error 이유는 두 번째 값입니다.

  • 그만큼 File.open!() 반면에 함수는 io_device파일이 성공적으로 열리면 오류가 발생합니다. 참고 : 이것은 우리가 논의 할 모든 파일 모듈 함수에서 따르는 패턴입니다.

이 파일을 열 모드를 지정할 수도 있습니다. 읽기 전용 및 utf-8 인코딩 모드로 파일을 열려면 다음 코드를 사용합니다.

file = File.open!("newfile", [:read, :utf8])

파일에 쓰기

파일에 쓰는 방법에는 두 가지가 있습니다. File 모듈에서 쓰기 기능을 사용하는 첫 번째 것을 보겠습니다.

File.write("newfile", "Hello")

그러나 동일한 파일에 여러 번 쓰는 경우에는 사용하지 마십시오. 이 함수가 호출 될 때마다 파일 설명자가 열리고 파일에 쓰기 위해 새 프로세스가 생성됩니다. 루프에서 여러 쓰기를 수행하는 경우 다음을 통해 파일을 엽니 다.File.openIO 모듈의 메소드를 사용하여 작성하십시오. 같은 것을 이해하는 예를 고려해 보겠습니다.

#Open the file in read, write and utf8 modes. 
file = File.open!("newfile_2", [:read, :utf8, :write])

#Write to this "io_device" using standard IO functions
IO.puts(file, "Random text")

다음과 같은 다른 IO 모듈 방법을 사용할 수 있습니다. IO.writeIO.binwrite io_device로 열린 파일에 씁니다.

파일에서 읽기

파일에서 읽는 방법에는 두 가지가 있습니다. 파일 모듈에서 읽기 기능을 사용하는 첫 번째 것을 보겠습니다.

IO.puts(File.read("newfile"))

이 코드를 실행할 때 첫 번째 요소가있는 튜플을 가져와야합니다. :ok 그리고 두 번째는 newfile의 내용으로

우리는 또한 사용할 수 있습니다 File.read! 우리에게 반환 된 파일의 내용을 가져 오는 함수입니다.

열린 파일 닫기

File.open 함수를 사용하여 파일을 열 때마다 사용을 마친 후 다음을 사용하여 닫아야합니다. File.close 기능-

File.close(file)