Opens a file to read specific content from it and/or to write new content into it.
file := FileOpen(Filename, Flags , Encoding)
열 파일의 경로. 절대 경로를 지정하지 않으면 A_WorkingDir에 있다고 간주됩니다.
[v1.1.17+]: 표준 입력/출력/에러 스트림을 열려면 별표를 (또는 별표 두 개를) 아래에 보여주는 바와 같이 지정하십시오:
FileOpen("*", "r") ; 표준입력 FileOpen("*", "w") ; 표준출력 FileOpen("**", "w") ; 표준에러
[in AHK_L 54+] 원하는 접근 모드를 가리키는 문자 그리고 다음에 다른 옵션이 따라와 구성된 문자열 (선택적으로 사이에 스페이스 또는 탭); 또는 [ AHK_L 42+] 숫치 플래그의 조합 (합계). 지원되는 값들은 아래 테이블에 기술합니다.
파일에 UTF-8 또는 UTF-16 바이트 순서 표식이 없을 때, 또는 h
(핸들) 프래그가 사용될 때 텍스트 I/O에 사용할 코드 페이지입니다. 생략되면, A_FileEncoding의 현재 값이 사용됩니다.
Flag | 십진수 값 | 십육진수 값 | 설명 |
---|---|---|---|
r | 0 | 0x0 | Read: 파일이 존재하지 않으면 실패합니다. |
w | 1 | 0x1 | Write: 새 파일을 생성합니다, 기존의 파일을 덮어쓰기 합니다. |
a | 2 | 0x2 | Append: 파일이 존재하지 않으면 새 파일을 생성합니다, 그렇지 않으면 파일 포인터를 파일의 끝으로 이동합니다. |
rw | 3 | 0x3 | Read/Write: 파일이 존재하지 않으면 새 파일을 생성합니다. |
h | Filename이 객체 안에 싸 넣을 파일 핸들임을 나타냅니다. 공유 모드 플래그는 무시됩니다. 그리고 이 핸들이 가리키는 파일이나 스트림은 바이트 순서 표식이 점검되지 않습니다. 파일 핸들은 파일 객체가 파괴될 때 자동으로 잠기지 않습니다. 그리고 Close를 호출해 봐야 아무 효과도 없습니다. 주의 하십시오. Filename이 파이프나 통신 장치 같이 위치 지정이 안되는(nonseeking) 장치를 가리키는 핸들이면 Seek, Tell 그리고 Length를 사용하면 안 됩니다. |
Flag | 십진수 값 | 십육진수 값 | 설명 |
---|---|---|---|
-rwd | 읽기, 쓰기 그리고 지우기 접근을 위해 파일을 잠금니다. r , w 그리고 d 을 조합해 사용해도 됩니다. - 를 지정하면 -rwd 를 지정한 것과 같습니다. 완전히 생략하면, 기본은 모든 접근을 공유하는 것입니다. |
||
0 | 0x0 | Flags가 숫치이면, 공유 모드 플래그가 없을 경우 파일이 잠깁니다. | |
256 | 0x100 | read 접근을 공유합니다. | |
512 | 0x200 | write 접근을 공유합니다. | |
1024 | 0x400 | delete 접근을 공유합니다. |
Flag | 십진수 값 | 십육진수 값 | 설명 |
---|---|---|---|
`n | 4 | 0x4 | 읽을 때 `r`n 을 `n 으로 교체합니다. 그리고 쓸 때 `n 을 `r`n 으로 교체합니다. |
`r | 8 | 0x8 | 읽을 때 나홀로 `r 을 `n 으로 교체합니다. |
파일이 성공적으로 열리면, 반환 값은 파일 객체입니다.
함수가 실패하면, 반환 값은 0이고 [in AHK_L 54+] A_LastError는 에러 코드가 담깁니다.
함수가 성공했는지 점검하려면 if file
또는 IsObject(file)
를 사용하십시오.
UTF-8 또는 UTF-16 파일이 생성될 때, 바이트 순서 표식이 파일에 씌여집니다. 단, Encoding (또는 Encoding을 생략하면 A_FileEncoding)에 UTF-8-RAW
또는 UTF-16-RAW
이 담겨 있는 경우는 예외입니다.
UTF-8 또는 UTF-16 바이트 순서 표식(byte order mark (BOM))을 담고 있는 파일이 읽기 접근을 위해 열릴 때, BOM은 파일 포인터를 그 다음으로 이동해서 출력으로부터 제외됩니다. 그러므로, File.Position
은 파일을 열고 난후 즉시 3 또는 2를 보고합니다.
텍스트를 파일에 쓴다음 다시 메모리로 읽어 들입니다 (다음 DllCall-예제와 기능이 같습니다).
FileSelectFile, FileName, S16,, Create a new file: if (FileName = "") return file := FileOpen(FileName, "w") if !IsObject(file) { MsgBox Can't open "%FileName%" for writing. return } TestString := "This is a test string.`r`n" ; 파일을 이런 식으로 쓸 때, `n 말고 `r`n을 사용하여 새 줄을 시작하십시오. file.Write(TestString) file.Close() ; 파일에 썼으므로 이제 다시 그 내용을 메모리로 읽어 들입니다. file := FileOpen(FileName, "r-d") ; 파일을 읽습니다 ("r"), 지우기 ("-d")만 빼고 모든 접근을 공유합니다. if !IsObject(file) { MsgBox Can't open "%FileName%" for reading. return } CharsToRead := StrLen(TestString) TestString := file.Read(CharsToRead) file.Close() MsgBox The following string was read from the file: %TestString%
읽기 전용 모드로 스크립트를 엽니다. 그리고 그의 첫 줄을 읽습니다.
file := FileOpen(A_ScriptFullPath, "r") MsgBox % file.ReadLine()
Demonstrates the usage of the standard input/output streams.
; 다음 데모를 보여주기 위해 콘솔 창을 엽니다:
DllCall("AllocConsole")
; 어플리케이션의 stdin/stdout 스트림을 새줄-변환 모드로 엽니다.
stdin := FileOpen("*", "r `n") ; [v1.1.17+] 필요
stdout := FileOpen("*", "w `n")
; 예전 버전에는 다음을 사용합니다:
; stdin := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n")
; stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")
stdout.Write("Enter your query.`n\> ")
stdout.Read(0) ; 쓰기 버퍼를 비웁니다.
query := RTrim(stdin.ReadLine(), "`n")
stdout.WriteLine("Your query was '" query "'. Have a nice day.")
stdout.Read(0) ; 쓰기 버퍼를 비웁니다.
Sleep 5000