Lua-파일 I / O
I / O 라이브러리는 Lua에서 파일을 읽고 조작하는 데 사용됩니다. Lua에는 암시 적 파일 설명자와 명시 적 파일 설명 자라는 두 가지 종류의 파일 작업이 있습니다.
다음 예에서는 아래와 같이 샘플 파일 test.lua를 사용합니다.
-- sample test.lua
-- sample2 test.lua
간단한 파일 열기 작업은 다음 문을 사용합니다.
file = io.open (filename [, mode])
다음 표에는 다양한 파일 모드가 나열되어 있습니다.
Sr. 아니. | 모드 및 설명 |
---|---|
1 | "r" 읽기 전용 모드이며 기존 파일이 열리는 기본 모드입니다. |
2 | "w" 기존 파일을 덮어 쓰거나 새 파일을 만드는 쓰기 가능 모드입니다. |
삼 | "a" 기존 파일을 열거 나 추가 할 새 파일을 만드는 추가 모드입니다. |
4 | "r+" 기존 파일에 대한 읽기 및 쓰기 모드입니다. |
5 | "w+" 파일이 존재하거나 읽기 쓰기 권한으로 새 파일이 생성되면 기존 데이터가 모두 제거됩니다. |
6 | "a+" 기존 파일을 열거 나 새 파일을 만드는 읽기 모드가 활성화 된 추가 모드입니다. |
암시 적 파일 설명자
암시 적 파일 설명자는 표준 입력 / 출력 모드를 사용하거나 단일 입력 및 단일 출력 파일을 사용합니다. 암시 적 파일 설명자를 사용하는 샘플은 다음과 같습니다.
-- Opens a file in read
file = io.open("test.lua", "r")
-- sets the default input file as test.lua
io.input(file)
-- prints the first line of the file
print(io.read())
-- closes the open file
io.close(file)
-- Opens a file in append mode
file = io.open("test.lua", "a")
-- sets the default output file as test.lua
io.output(file)
-- appends a word test to the last line of the file
io.write("-- End of the test.lua file")
-- closes the open file
io.close(file)
프로그램을 실행하면 test.lua 파일의 첫 번째 줄이 출력됩니다. 우리 프로그램의 경우 다음과 같은 결과를 얻었습니다.
-- Sample test.lua
이것은 test.lua 파일의 첫 번째 줄이었습니다. 또한 "-End of the test.lua file"줄이 test.lua 코드의 마지막 줄에 추가됩니다.
위의 예에서 io. "x"메서드를 사용하여 암시 적 설명자가 파일 시스템에서 작동하는 방식을 볼 수 있습니다. 위의 예제는 선택적 매개 변수없이 io.read ()를 사용합니다. 선택적 매개 변수는 다음 중 하나 일 수 있습니다.
Sr. 아니. | 모드 및 설명 |
---|---|
1 | "*n" 현재 파일 위치에서 읽고 파일 위치에있는 경우 숫자를 반환하거나 nil을 반환합니다. |
2 | "*a" 현재 파일 위치에서 파일의 모든 내용을 반환합니다. |
삼 | "*l" 현재 파일 위치에서 행을 읽고 파일 위치를 다음 행으로 이동합니다. |
4 | number 함수에 지정된 바이트 수를 읽습니다. |
기타 일반적인 I / O 방법에는 다음이 포함됩니다.
io.tmpfile() − 프로그램이 종료되면 제거 될 읽기 및 쓰기 용 임시 파일을 반환합니다.
io.type(file) − 입력 파일에 따라 파일, 닫힌 파일 또는 nil을 반환합니다.
io.flush() − 기본 출력 버퍼를 지 웁니다.
io.lines(optional file name)− 파일 이름이 제공되거나 기본 파일이 사용되고 루프의 끝에서 닫히지 않는 경우 파일을 반복하고 파일을 마지막에 닫는 일반 for 루프 반복기를 제공합니다.
명시 적 파일 설명자
한 번에 여러 파일을 조작 할 수있는 명시 적 파일 설명자를 자주 사용합니다. 이러한 함수는 암시 적 파일 설명자와 매우 유사합니다. 여기서는 io.function_name 대신 file : function_name을 사용합니다. 동일한 암시 적 파일 설명자 예제의 파일 버전에 대한 다음 예제가 아래에 나와 있습니다.
-- Opens a file in read mode
file = io.open("test.lua", "r")
-- prints the first line of the file
print(file:read())
-- closes the opened file
file:close()
-- Opens a file in append mode
file = io.open("test.lua", "a")
-- appends a word test to the last line of the file
file:write("--test")
-- closes the open file
file:close()
프로그램을 실행하면 암시 적 설명자 예제와 유사한 출력이 표시됩니다.
-- Sample test.lua
파일 열기의 모든 모드와 외부 설명자에 대한 읽기 매개 변수는 암시 적 파일 설명자와 동일합니다.
다른 일반적인 파일 방법에는 다음이 포함됩니다.
file:seek(optional whence, optional offset)− Whence 매개 변수가 "set", "cur"또는 "end"입니다. 파일 시작 부분에서 업데이트 된 파일 위치로 새 파일 포인터를 설정합니다. 오프셋은이 함수에서 0을 기준으로합니다. 오프셋은 첫 번째 인수가 "set"인 경우 파일의 시작 부분부터 측정됩니다. "cur"인 경우 파일의 현재 위치에서; 또는 "end"인 경우 파일의 끝에서. 기본 인수 값은 "cur"및 0이므로 인수없이이 함수를 호출하여 현재 파일 위치를 가져올 수 있습니다.
file:flush() − 기본 출력 버퍼를 지 웁니다.
io.lines(optional file name)− 파일 이름이 제공되거나 기본 파일이 사용되고 루프의 끝에서 닫히지 않는 경우 파일을 반복하고 파일을 마지막에 닫는 일반 for 루프 반복기를 제공합니다.
다음은 검색 방법을 사용하는 예입니다. 파일 끝 이전의 25 개 위치에서 커서를 오프셋합니다. 읽기 기능은 탐색 위치에서 파일의 나머지 부분을 인쇄합니다.
-- Opens a file in read
file = io.open("test.lua", "r")
file:seek("end",-25)
print(file:read("*a"))
-- closes the opened file
file:close()
다음과 유사한 출력이 표시됩니다.
sample2 test.lua
--test
Lua 파일 작업의 전체 기능을 알기 위해 모든 다른 모드와 매개 변수를 사용할 수 있습니다.