루아 나에게 파일 / O
루아 I / 읽기 및 처리 파일에 대한 O 라이브러리. 단순한 패턴 (C 등), 전체 모드로 구분.
- 단순 모드 (간단한 모델)는 현재 입력 파일과 전류 출력 파일을 갖고, 이들 파일 관련 동작을 제공한다.
- 달성 외부 파일 핸들을 사용하여 풀 모드 (전체 모델). 이는 물체의 형태에도 불구하고, 모든 파일 동작은 파일 핸들하는 방법으로 정의 될
때 더 적합한 단순 모드에서 간단한 파일 작업을 할 수 있습니다. 그러나 일부 고급 파일 작업 후, 간단한 모델은 불충분 한 것으로 나타났다. 이 작업을 여러 개의 파일을 읽는 동안 예를 들어, 전체 모드가 더 적합 사용합니다.
다음과 같이 파일 열기 작업 문은 다음과 같습니다
file = io.open (filename [, mode])
값 모드는 다음과 같습니다
모드 | 기술 |
---|---|
연구 | 읽기 전용 파일을 열 파일이 존재해야합니다. |
w | 파일이 존재하면, 파일 길이, 즉, 파일의 내용이 사라지고, 0으로 클리어되고, 기록 전용 파일을 연다. 파일이 존재하지 않는 경우, 파일을 생성한다. |
추가 쓰기 전용 파일에서 열립니다. 파일이 존재하지 않는 경우 파일이 존재하면, 파일의 설정은, 기록 데이터가 파일의 마지막에 추가되는 원본 파일의 내용은 유지된다. (EOF 문자 예약) | |
R + | 모두 읽고 파일을 열 작성, 파일이 존재해야합니다. |
w의 + | 판독 파일이 존재하면, 분명 제로의 파일 길이가 파일의 내용이 사라지는 것, 파일을 기록하는 열기. 파일이 존재하지 않는 경우, 파일을 생성한다. |
A + | 그리고 비슷하지만이 파일을 읽고 쓸 수있다 |
B | 파일은 바이너리 파일 일 경우 바이너리 모드에는 B를 추가 할 |
+ | 로그인 파일을 읽고 쓸 수 있습니다 나타냅니다 |
단순 모드
표준 I / O 또는 현재의 입력 파일을 사용하여 현재의 출력 파일을 사용하는 단순 모드.
다음은 file.lua 파일 코드, 파일 조작 test.lua 인 다음과 같이 (파일을 만들 필요가없는 경우)
-- 以只读方式打开文件 file = io.open("test.lua", "r") -- 设置默认输入文件为 test.lua io.input(file) -- 输出文件第一行 print(io.read()) -- 关闭打开的文件 io.close(file) -- 以附加的方式打开只写文件 file = io.open("test.lua", "a") -- 设置默认输出文件为 test.lua io.output(file) -- 在文件最后一行添加 Lua 注释 io.write("-- test.lua 文件末尾注释") -- 关闭打开的文件 io.close(file)
위의 코드의 구현, 당신은 정보의 첫 번째 줄은 출력 파일을 test.ua 및 파일의 마지막 줄 루아 의견을 추가 찾을 수 있습니다. 출력은 그대로 여기입니다 :
-- test.lua 文件
위의 예에서 우리는 IO "X", 상기 io.read ()를 사용하는 우리 파라미터를 갖고 있지 않은 파라미터는 다음 테이블 중 하나가 될 수있다 :
모드 | 기술 |
---|---|
"* N" | 숫자 읽고 그것을 반환됩니다. 예 : file.read ( "* n을") |
"*의 A" | 현재 위치에서 전체 파일을 읽어보십시오. 예 : file.read ( "* a를") |
"*의 L"(기본값) | 반환 nil을에서 파일 (EOF)의 끝에 다음 행을 읽습니다. 예 : file.read ( "*의 L") |
수 | 문자열에 지정된 문자 수를 반환, 또는 EOF는 nil을 반환 할 때. 예 : file.read (5) |
다른 IO 방법은 다음과 같습니다
io.tmpfile는 () : 임시 파일에 대한 핸들을 반환 파일이 업데이트 모드로 열립니다 자동으로 삭제하면 프로그램이 종료
io.type (파일) : 검출 OBJ 파일을 사용할 수 처리 여부
io.flush은 () : 파일에 모든 데이터를 버퍼링 쓰기
io.lines (선택 사항 파일 이름) : 파일의 끝, 그것은 전무를 반환 할 때 각각의 호출은, 파일의 라인을 얻을 것이다, 반복자 함수를 반환하지만, 파일을 닫습니다하지 않습니다
전체 모드
보통 우리는 동시에 여러 파일을 처리 할 필요가있다. 대신 io.function_name 방법을 FUNCTION_NAME : 우리는 파일을 사용해야합니다. 다음 예는 동시에 동일한 파일을 보여
-- 以只读方式打开文件 file = io.open("test.lua", "r") -- 输出文件第一行 print(file:read()) -- 关闭打开的文件 file:close() -- 以附加的方式打开只写文件 file = io.open("test.lua", "a") -- 在文件最后一行添加 Lua 注释 file:write("--test") -- 关闭打开的文件 file:close()
위의 코드의 구현, 당신은 정보의 첫 번째 줄은 출력 파일을 test.ua 및 파일의 마지막 줄 루아 의견을 추가 찾을 수 있습니다. 출력은 그대로 여기입니다 :
-- test.lua 文件
단순 모드와 일치하는 매개 변수를 참조하십시오.
다른 방법 :
파일 : 추구 (옵션 어디서는 선택 오프셋) : 설정하고 현재 파일 위치를 검색, 성공, (바이트) 최종 파일의 위치를 반환, 전무 실패 플러스 오류 메시지가 리턴됩니다.어디서 매개 변수 값이 될 수 있습니다 :
- "설정": 파일의 시작 부분에서
- "의 CUr"현재 위치에서 [기본]
- "끝": 파일의 끝에서 시작
- 오프셋 (offset) : 기본값은 0
파일 : 플러시 () 파일에 대한 모든 데이터를 버퍼링 쓰기
io.lines (선택 사항 파일 이름) : 지정된 파일의 파일 이름 읽기 모드를 열고 반복자 함수를 반환, 각 호출은 파일의 끝, 그것은 전무를 반환 할 때, 선 파일, 자동으로 파일을 닫습니다.
벨트 파라미터 io.lines () <=> io.input () 경우 라인 (); 기본 입력 장치의 내용을 읽을 수 있지만, 끝이 같은 파일을 닫지 않는다for line in io.lines("main.lua") do print(line) end
다음의 예는 파일 끝에서 두 번째 위치 (25)의 위치 및 파라미터는, 현재 위치 (끝에서 두 번째 위치 (25))의 전체 파일을 읽어 * 판독 방법을 사용하는 방법을 찾아 사용한다.
-- 以只读方式打开文件 file = io.open("test.lua", "r") file:seek("end",-25) print(file:read("*a")) -- 关闭打开的文件 file:close()
내 결과를 여기에 출력을 수 있습니다 :
st.lua 文件末尾--test