StartprogrammingusingObjectPascal:ReadingTextFileProgram
Jump to navigation
Jump to search
텍스트 파일 읽기 프로그램
Program ReadFile;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils
{ you can add units after this };
var
FileName: string;
F: TextFile;
Line: string;
begin
Write('Input a text file name: ');
Readln(FileName);
if FileExists(FileName) then
begin
// Link file variable (F) with physical file (FileName)
AssignFile(F, FileName);
Reset(F); // Put file mode for read, file should exist
// while file has more lines that does not read yet do the loop
while not Eof(F) do
begin
Readln(F, Line); // Read a line from text file
Writeln(Line); // Display this line in user screen
end;
CloseFile(F); // Release F and FileName connection
end
else // else if FileExists..
Writeln('File does not exist');
Write('Press enter key to close..');
Readln;
end.
리눅스에서는 다음 파일 이름을 입력할 수 있습니다.
/etc/resolv.conf
또는 다음 파일 이름을 입력할 수 있습니다.
/proc/meminfo
/proc/cpuinfo
텍스트 파일을 다루기 위해 새로운 형식과 함수, 프로시저를 사용했는데,
- TextFile 은 텍스트 파일 변수를 선언하기 위해 사용하는 형식입니다. 이 변수는 다음의 사용을 위해 텍스트 파일에 연결할 수 있습니다.
F: TextFile;
- FileExists 는 SysUtils 유닛에 들어있는 함수입니다. 파일의 존재를 확인합니다. 저장 매체에 파일이 존재하는 경우 True 를 되돌립니다.
if FileExists(FileName) then
- 파일의 존재를 확인한 다음에는, 파일 변수(F)에 실제 파일을 연결하기 위해 AssignFile 프로시저를 사용할 수 있습니다. F 변수에 대한 사용방법은 변수가 가리키는 실제 파일에 따라 다를 수 있습니다.
AssignFile(F, FileName);
- Reset 프로시저는 텍스트 파일을 읽기 전용으로 읽어들이고 파일의 첫번째 문자에 읽기 포인터를 위치합니다. 만약 현재 사용자에게 파일의 읽기 권한이 없다면, 접근 거부(ACCESS DENIED)와 같은 오류 메시지가 나타날 것입니다.
Reset(F); // put file mode for read, file should exist
- Readln 프로시저는 파일로부터 완전한 줄을 읽어들여 변수 Line에 넣기위해 사용합니다. 텍스트 파일로부터 줄을 읽기 전에 파일의 끝에 도달했는지 확인할 것입니다. 여기서 다음 함수 Eof를 통해 이를 해결할 수 있습니다.
Readln(F, Line); // read a line from text file
- Eof 함수는 파일의 끝에 도달했을 경우 True 를 반환합니다. Read 처리를 더 이상 사용할 수 없고 파일의 내용을 다 읽었다는 상태를 나타낼 때 사용합니다.
while not Eof(F) do
- 파일로부터 읽거나 기록하는 동작이 끝나면, 파일을 닫아 릴리스 해야 하는데, Reset 프로시저가 운영체제로부터 파일을 선점하고 있으며, 파일이 열려있는 동안 다른 프로그램이 기록하거나 지우는 것을 막고 있기 때문입니다.
CloseFile(F); // release f and filename connection
파일을 여는 중에 Reset 프로시저의 동작을 성공적으로 수행했을 때, CloseFile 을 사용할 것입니다. 만약 Reset 이 실패(예를 들어, 파일이 존재하지 않거나 다른 프로그램이 파일을 사용하고 있다면)하면 이런 경우 파일을 닫지 않습니다.
다음 예제에서는 새로운 텍스트 파일을 만들고 임의의 텍스트를 넣어보겠습니다.