Latest web development tutorials

루아 나에게 파일 / 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