웹모아
웹모아[가입] 로그인 / 회원가입   검색     


  
일반팁
 

FileSystemObject 다루기 V - 파일 읽기
2006-04-08 16:23:56 댓글:(0)   조회:1882
 

<%
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는 텍스트에서 라인단위로 읽어오는 것이지 출력시와는 아무런 관계가 없슴다. 그래서 우리는 불러온 텍스트 라인마다 를 붙여주어야 하는 것이지요. 

소스를 보면 주석처리가 되어 있는 또 다른 부분이 있습니다. 이번에는 이 주석 처리된 부분의 주석을 지우고 이 방법으로 텍스트를 불러와 보도록 해요. 결과를 확인해 보면 이전 것과 같게 나올 것입니다. 

content = objFile.readall 
str = replace(content,chr(13)&chr(10),"<br>") 
Response.write str 

이번 예제에서 텍스트를 불러올 때 첫 번째 방법이 라인단위로 불러오는 것이었다면 이 두 번째 방법은 한번에 모든 텍스트를 불러오는 것입니다. 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               파일에서 읽어올 때 라인하나를 건너뛴다
. 


[이전글]  Scripting.FilesyStemObject 스크립팅 객체
[다음글]  FileSystemObject 다루기 IV - 파일에 쓰기


 
댓글쓰기는 회원(로그인 하신분) 이상 가능합니다.


 댓글 (0)

  
일반팁
페이지: 1 / 4   

 oledb 접근 오류
(홈마스타) 댓글:(1) 열람:30809   2006.09.08


 ASP 에서 MDB 사용
(홈마스타) 열람:1584   2006.09.08


   [RE] ASP 에서 MDB 사용
(홈마스타) 열람:1904   2006.09.08


 Global.asa 파일에 대하여
(홈마스타) 열람:1433   2006.04.29


 배열의 순차정리 - Asp에서 for 문을 돌려 얻은 숫자값을 정렬하려면?
(홈마스타) 열람:1839   2006.04.27


   [RE] 배열의 순차정리
(홈마스타) 열람:1330   2006.04.27


 Redirect 예제
(홈마스타) 열람:1494   2006.04.21


 항목이 몇개인지 모르는 배열에 저장된 내용..출력하는 문제
(홈마스타) 열람:1510   2006.04.10


 asp에서 자료삭제할때
(홈마스타) 열람:1338   2006.04.09


 asp 로 파일 쓰기를 하려는데 계속 에러가 발생합니다
(홈마스타) 열람:1302   2006.04.09



[1]  [2]  [3]  [4]  

복수단어 검색은 공백(space)로 구분해 주세요.




 
최근 글 [손님]
 
인기 글 [손님]
[깊은연못] 24시간 Classical Radio