<%
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = fs.OpenTextFile("c:MyTesttest.txt",1)
%>
<HTML>
<BODY>
<br><center><font face="돋움" size="2">
<h2>FSO 텍스트화일 읽기</h2>
<%
Do While objFile.AtEndOfStream <> True
Response.write objFile.readLine & "<br>"
loop
' 이런 방법도 같은 결과를 출력한다.(ReadAll 사용)
' content = objFile.readall
' str = replace(content,chr(13)&chr(10),"<br>")
' Response.write str
%>
</font></center></BODY></HTML>
CreateObject는 이미 수도 없이 이야기한 부분이니 말이지요. 주의할 것이 하나있는데 두 번째 라인인 OpenTextFile 부분에서 두 번째 인자가 이번에는 "1"로 세팅되었다는 것이 중요합니다.
다음과 같이 말이지요.
fs.OpenTextFile("c:MyTesttest.txt",1)
파일을 읽어들일 경우는 읽기전용인 ForReading(1)로 세팅하는 것이 좋습니다. 만일 여기를 읽고쓰기 모드인 ForAppending(8)로 두게 되면 이 예제는 에러를 발생시킵니다. 몇몇 속성과 메소드들 ( 예를 들면 AtEndOfStream, AtEndOfLine, Read메소드등)은 읽기전용 모드에서만 동작하기 때문이지요. 기억하십시용. 단지 파일을 읽어들일 경우는 ForReading 모드로 설정해 주어야 모든 기능을 제대로 사용할 수가 있다는 사실을,,,,,. 이제 다음 부분의 소스를 보시지요..
Do While objFile.AtEndOfStream <> True
Response.write objFile.readLine & "<br>"
loop
여기서 첨 만나는 것이 AtEndOfStream 인데 이것은 TextStream의 속성중에 하나입니다. 현재의 위치가 파일의 끝인지를 나타내주는 속성으로 파일에 끝에 다다르면 true를 아직 파일의 끝에 다다르지 못했으면 false를 리턴하게 하지요.
즉 위의 Do while문은 오픈된 파일의 끝에 다다를 때까지 어떤 작업을 하라는 것입니다. 그 어떤 작업이라는 것이 무엇일까요? 바로 RealLine입니다. 즉, 파일에서 데이터를 라인단위로 가져오라고 하는 것이지요.
그리고 Response.write를 통해 화면에 출력시키고 있습니다. 유심히 보아야 할 것은 realLine 메소드 다음에 나타난 "<br>" 문자열의 추가인데, 만일 이 <br>을 추가해 주지 않으면 다음과 그림과 같이 문자열들이 주욱 붙어서 나오게 됩니다
readline는 텍스트에서 라인단위로 읽어오는 것이지 출력시와는 아무런 관계가 없슴다. 그래서 우리는 불러온 텍스트 라인마다 를 붙여주어야 하는 것이지요.
소스를 보면 주석처리가 되어 있는 또 다른 부분이 있습니다. 이번에는 이 주석 처리된 부분의 주석을 지우고 이 방법으로 텍스트를 불러와 보도록 해요. 결과를 확인해 보면 이전 것과 같게 나올 것입니다.
이번 예제에서 텍스트를 불러올 때 첫 번째 방법이 라인단위로 불러오는 것이었다면 이 두 번째 방법은 한번에 모든 텍스트를 불러오는 것입니다. readall이라는 메소드가 바로 그 역할을 하지요. 한번에 모든 텍스트를 불러와서 content라는 변수에 저장하고 있습니다.
그리고, 그 다음에 Replace라고 하는 아주 유용한 함수를 사용하고 있습니다. 이 함수는 어떤 문자열에서 특정 문자를 우리가 원하는 문자로 바꾸어주는 역할을 하는 함수로서 상당히 자주 사용하는 함수입니다.
바뀐값이 저장될 변수 = replace( 전체문자열, 바꾸고자하는 문자, 바꿀 문자)
위의 소스를 예로 들어 설명하면 str = replace(content,chr(13)&chr(10),"<br>") 의 의미는 불러온 전체 텍스트인 content라는 문자열중에서 chr(13)&chr(10)이라는 것을 <br>이라는 문자로 다 바꾸어서 str이라는 변수에 넣으라는 의미인 것이지요.
chr(13)&chr(10) 라는 것은 엔터키의 값입니다. 만일 이 replace 처리를 안 해주게 되면 이 결과도 마찬가지로 글들이 붙어서 나오게 될 것입니다. 파일을 열고 그 파일의 TextStream을 가져와서 우리는 writeline, reaLline, readAll 등의 메소드와 AtEndOfStream같은 속성을 다루어 보았습니다.
속성 설명
write(문자열) 파일에 문자열을 입력
WriteLine(문자열) 파일에 문자열과 엔터값(라인문자)을 입력
WriteBlankLines(i) 파일에 i 개의 엔터값(라인문자)을 입력
Read(i) 파일에서 i 개의 문자만을 읽어온다
ReadLine 파일에서 한 라인을 읽어온다
ReadAll 파일에서 모든 텍스트를 읽어온다
Skip(i) 파일에서 i 개 만큼 문자를 건너뛴다
SkipLine 파일에서 읽어올 때 라인하나를 건너뛴다