ASP에서 파일 처리하기
asp에서 파일을 처리하기 위해서는 asp에서 제공하는 FileSystemObject 객체를 이용해야한다. FileSystemObject의 인스턴스를 생성하기 위해서는 Server 객체의 CreateObject메소드를 이용하면된다. 또는 <object></object>태그를 이용한다. <object> 태그를 이용하는 것이 속도면에서 좋다.
set fso = Server.CreateObject("Scripting.FileSystemObject")
<object runat=server progid=Scripting.FileSystemObject id=fso></object>
주의) object 태그를 사용할 때는 반드시 태그를 닫아야 한다.
FileSystemObject의 인스턴스를 생성하고 나면, TextStream 객체를 생성할 수 있게 된다.
FileSystemObject 객체와 TextStream 객체에서 제공하는 메소드와 프로퍼티는 다음과 같다.
메소드
CreateTextFile : Text 형태의 파일을 생성한다. 이미 존재하는 파일을 생성하면 덮어 쓰여진다. TextStream을 리턴한다.
OpenTextFile : 이미 생성되어있는 파일을 열 때 사용함. TextStream을 리턴한다.
Close : 파일을 닫는다.
Read : 파일에서 지정한 수 만큼 문자를 읽어 들일 때 사용.
ReadLine : 파일의 문자열을 한 줄로 읽을 때 사용.
ReadAll : 파일의 내용 모두를 한 줄로 읽을 때 사용.
Skip : 파일을 읽을 때 문자를 건너뛴다.
SkipLine : 파일을 읽을 때 다음 줄을 건너뛴다.
Write : 파일에 문자열을 저장할 때 사용.
WriteLine : 문자열 단위로 문자를 출력한다.
WriteBlankLines : 파일에 문장진행 문자를 지정한 수 만큼 출력한다.
프로퍼티
AtEndOfLine : 파일 포인터가 파일의 끝에 있으면 True를 리턴함.
Colume : 파일의 현재 문자의 번호를 리턴함.
Line : 파일의 현재 라인의 번호를 리턴함.
CreateTextFile
이 메소드는 새로운 파일을 만들거나 기존의 파일을 덮어쓸 때 사용한다. 위의 모든 메소드와 프로퍼티는 Server 객체의 CreateObject 메소드를 통해 FileSystemObject의 인스턴스가 생성된 뒤부터 사용이 가능하다.
[생성된객체].CreateTextFile("파일경로"[,"덮어쓰기"][,"유니코드"]) '[]는생략가능
'생성된객체'는 CreateObject 메소드를 통해 리턴받은 값이다. '파일경로'는 서버의 물리적인 경로를 지정한다. 아니면 Server.MapPath("상대경로")를 이용한다. 예를 들면, C:\Inetpub\wwwroot\test.txt 또는 Server.MapPath("test.txt") 와 같이 사용해야 한다.
'덮어쓰기'는 True와 False로 구분하는데, True가 기본값이다. 만약, 동일한 파일이 존재할때 False로 설정하면 에러가 난다. '유니코드'는 True와 False로 구분하는데, True일 경우 유니코드로 된 파일을 생성하면, False일 경우에는 ASCII로 된 파일을 생성한다. 기본값은 False 이다.
참조) Server.MapPath("상대경로")는 이것을 포함하고 있는 파일의 물리적인 경로를 리턴한다.
OpenTextFile
이 메소드는 이미 만들어져 있는 파일을 열 때 사용하는데 읽기 쓰기 추가가 가능하다
생성된객체.OpenTextFile("파일경로") [, 읽기쓰기모드] [, 파일생성여부] [, 형식] )
읽기쓰기모드
ForReading 1 : 파일을 읽기 전용으로 연다. ( 기본값 읽기만 가능 )
ForAppending 8 : 파일을 추가모드로 연다. ( 파일의 끝에 내용을 추가한다. )
ForWriting 2 : 파일을 쓰기모드로 연다. ( 파일의 내용을 지우고 다시 쓴다. )
파일생성여부
True : 파일을 새로 만든다.
False : 기존의 파일을 연다. ( 기본값 )
형식
TristateUseDefault -2 : 시스템 기본값을 이용해 파일을 연다.
TristateTrue -1 : Unicode 형식으로 파일을 연다.
TristateFalse 0 : ASCII 형식으로 파일을 연다. ( 기본값 )
파일에 문자를 저장 - Write, WriteLine, WriteBlankLines
CreateTextFile과 OpenTextFile 메소드 중 하나를 통해 파일을 생성 또는 열게되면 파일에 문자를 저장할 수 있게 된다.
Write : 문자열 출력
WriteLine : 문자열을 출력한후 문장진행 문자를 출력해 새로운 라인으로 파일 포인터를 이동.
WriteBlankLines : 문자진행 문자만을 출력( 줄바꿈 )
[object].Write("문자열")
[object].WriteLine("문자열")
[object].WriteBlankLines(문자진행 문자 갯수)
여기서 object는 CreateTextFile 또는 OpenTextFile에서 리턴한 Stream객체이다. WriteBlankLines 메소드에서는 '문장진행 문자 갯수'는 새로운 문장을 입력할 샛수 만큼 숫자로 지정하면 지정한 만큼 새로운 문자열을 만든다.
예)
<%
set obj = CreateObject("Scripting.FileSystemObject")
if IsObject(obj) then
set objnewfile = obj.CreateTextFile("C:\Inetpub\wwwroot\test.txt")
objnewfile.Write("안녕하세요")
objnewfile.WriteBlankLines(3)
objnewfile.WriteLine("Test 입력구문입니다")
objnewfile.close
Response.Write("데이터를 저장했습니다")
else
Response.Write("객체 생성에 실패했습니다.")
end if
%>
test.txt에 저장된 결과
안녕하세요
[엔터]
[엔터]
Test 입력구문입니다
[엔터]
[엔터]는 줄바꿈이 된부분을 표시한 것임. WriteBlankLines(3)으로 3개의 라인이 만들어지고, 마지막 라인에 글이 쓰여지고 WriteLine을 글을 쓰고 줄바꿈을 하나 한다.
파일 내용 읽어오기 - Read, ReadAll, ReadLine
[object].Read(읽어들일 문자개수)
[object].ReadLine
[object].ReadAll
Read 메소드는 읽어들일 문자의 개수를 지정하면 지정한 수만큼의 문자를 읽어들인다.
지정된 문자보다 개수를 크게 지정하면 파일의 끝까지 읽어들인다.
ReadLine 메소드는 한 라인을 문자열로 읽어온다.
ReadAll 메소드는 파일의 모든 내용을 하나의 문자열로 읽어 들인다.
예)
<%
set obj = CreateObject("Scripting.FileSystemObject")
if IsObject(obj) then
set objopenfile = obj.OpenTextFile("c:\Inetpub\wwwroot\test.txt")
response.write("Read 메소드 " & objopenfile.Read(8) & "<br>")
response.write("ReadLine 메소드 " & objopenfile.ReadLine & "<br>")
response.write("ReadAll 메소드 " & objopenfile.ReadAll & "<br>")
objopenfile.close
else
response.write("객체 생성에 실패했습니다.")
end if
%>
결과)
Read 메소드 안녕하세요
ReadLine 메소드
ReadAll 메소드 Test 입력구문입니다.
Read 메소드는 지정한 문자만큼 읽어들이고,
ReadLine은 포인터가 위치한 라인을 읽어들이고 포인터를 다음 라인으로 옮긴다. 이 메소드를 사용하면 줄단위로 파일을 읽어들일 수 있다.
ReadAll 메소드는 파일 포인터가 위치한 곳에서 부터 파일의 끝까지 읽어들인다. 처음에 이 메소드를 사용하면 파일의 모든 내용을 하나의 문자열로 읽어들인다.
CLOSE
파일에 대한 작업을 끝마쳤으면 파일을 닫아야 한다. 파일을 닫기 위해서는 Close 메소드를 사용한다.
[object].Close
댓글 없음:
댓글 쓰기