본문 바로가기
프로그램 (PHP,Python)

ASP 페이지에서 텍스트 파일을 조작하는 방법

by 날으는물고기 2009. 11. 26.

ASP 페이지에서 텍스트 파일을 조작하는 방법

이 문서에서는 ASP(Active Server Pages) 페이지 내에서 텍스트 파일을 만들고, 쓰고, 이동하고, 복사하고, 삭제하는 방법을 설명합니다.

데이터베이스나 복잡한 형식의 파일이 너무 많을 때 간편하게 사용하기 위하여 또는 이전 데이터가 텍스트 파일 형태일 때 텍스트 파일을 사용할 수 있습니다. 일반적인 시나리오는 다음과 같습니다.
  • 메인프레임, 타사 응용 프로그램 또는 거래 파트너가 작성 또는 사용하는 플랫 파일을 읽거나 쓰기
  • 클라이언트 응용 프로그램이 제공하는 매개 변수를 기반으로 동적으로 생성되는 Windows 배치 또는 스크립트 파일
Scripting.FileSystemObject COM(구성 요소 개체 모델) 개체는 드라이버, 폴더 및 파일을 조작하는 다양한 기능을 제공합니다. 이 FSO(FileSystemObject) 개체는 ScrObj.dll이라고 하는 in-process COM 서버 내에서 구현됩니다. 이 문서에서는 FSO 개체 모델의 파일 조작 기능만 설명합니다.

요구 사항

다음 중 하나가 실행되어야 합니다.

  • Microsoft Internet Information Server(IIS) 4.0과 Active Server Pages(ASP) 2.0
  • Internet Information Services 5.0과 Active Server Pages 3.0
구현 세부 사항이 없는 경우 Microsoft COM 기술을 지원하는 스크립팅 언어를 사용하는 일반적인 방법을 적용할 수 있으며, 이러한 방법은 ASP에 국한되지 않습니다.

VBScript나 JScript를 잘 알면 도움이 됩니다.

FileSystemObject 만들기

텍스트 파일을 조작하기 전에 다음과 같이 FSO를 만듭니다.

VBScript 코드
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
				
JScript 코드
var objFSO;
objFSO = new ActiveXObject("Scripting.FileSystemObject");
				

텍스트 파일을 만들고 열고 삭제하는 방법

FSO는 빈 텍스트 파일을 만들 수 있는 CreateTextFile 메서드를 제공합니다. 또한 기존 파일을 열거나 삭제할 수 있는 OpenTextFileDeleteFile 메서드도 제공합니다. 또한 File 개체를 사용하여 세 가지 동작을 각각 수행할 수 있습니다. File 개체의 인스턴스를 얻으려면 FSO의 GetFile 메서드를 호출합니다. 그러나 이 문서는 FSO에서 직접적인 메서드만 보여줍니다. File 개체 기술에 대한 자세한 내용은 "참조" 절을 참조하십시오.

OpenTextFile 메서드를 사용하면 파일을 열어 텍스트 정보를 읽거나 쓰거나 추가할 수 있습니다.

VBScript 코드
Dim objFSO, objCreatedFile, objOpenedFile
Const ForReading = 1, ForWriting = 2, ForAppending = 8

'Create the FSO.
Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objCreatedFile = objFSO.CreateTextFile("c:\HowToDemoFile.txt", True)
Set objOpenedFile = objFSO.OpenTextFile("c:\HowToDemoFile2.txt", ForWriting, True)

'Use objCreatedFile and objOpenedFile to manipulate the corresponding files.
objCreatedFile.Close
objOpenedFile.Close

'Delete the files.
objFSO.DeleteFile "c:\HowToDemoFile.txt"
objFSO.DeleteFile "c:\HowToDemoFile2.txt"
				
JScript 코드
var objFSO, objCreatedFile, objOpenedFile;
var ForReading = 1, ForWriting = 2, ForAppending = 8;

// Create the FSO.
objFSO = new ActiveXObject("Scripting.FileSystemObject");

objCreatedFile = objFSO.CreateTextFile("c:\\HowToDemoFile.txt", true);
objOpenedFile = objFSO.OpenTextFile("c:\\HowToDemoFile2.txt", ForWriting, true);

// Use objCreatedFile and objOpenedFile to manipulate the corresponding files.
objCreatedFile.Close();
objOpenedFile.Close();

// Delete the files.
objFSO.DeleteFile("c:\\HowToDemoFile.txt");
objFSO.DeleteFile("c:\\HowToDemoFile2.txt");
				

텍스트 파일에서 쓰고 읽는 방법

FSO의 CreateTextFile 또는 OpenTextFile 메서드는 텍스트 파일에 쓰거나 파일을 읽는 메서드를 제공하는 TextStream 개체의 인스턴스를 반환합니다.

WriteWriteLine 메서드는 모두 텍스트를 열린 파일에 추가하지만 WriteLine은 후행 줄 바꿈 문자도 추가합니다. WriteBlankLines 메서드는 지정된 매개 변수를 기반으로 열린 파일에 하나 이상의 빈 줄을 씁니다.

Read 메서드는 열린 파일의 현재 위치에서 지정된 수의 문자를 읽습니다. ReadLine 메서드는 줄 바꿈 문자는 제외하고 줄 전체를 읽는 반면 ReadAll 메서드는 열린 파일의 전체 내용을 읽습니다. 이들 세 개의 메서드 모두 다양한 문자열 조작 방법을 사용하여 쉽게 조작할 수 있는 문자열로 결과 텍스트를 저장합니다.

다음 코드는 이런 메서드를 보여줍니다.

VBScript 코드
Dim objFSO, objTextFile
Dim sRead, sReadLine, sReadAll
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile("c:\HowToDemoFile.txt", True)

' Write a line with a newline character.
objTextFile.WriteLine("This line is written using WriteLine().")

' Write a line.
objTextFile.Write ("This line is written using Write().")

' Write three newline characters to the file.
objTextFile.WriteBlankLines(3)

objTextFile.Close

' Open file for reading.
Set objTextFile = objFSO.OpenTextFile("c:\HowToDemoFile.txt", ForReading)

' Use different methods to read contents of file.
sReadLine = objTextFile.ReadLine
sRead = objTextFile.Read(4)
sReadAll = objTextFile.ReadAll

objTextFile.Close
				
JScript 코드
var objFSO, objTextFile;
var sRead, sReadLine, sReadAll;
var ForReading = 1, ForWriting = 2, ForAppending = 8;

objFSO = new ActiveXObject("Scripting.FileSystemObject");
objTextFile =objFSO.CreateTextFile("c:\\HowToDemoFile.txt", true);

// Write a line with a newline character.
objTextFile.WriteLine("This line is written using WriteLine().");

// Write three newline characters to the file.
objTextFile.WriteBlankLines(3);

// Write a line.
objTextFile.Write ("This line is written using Write().");
objTextFile.Close();

// Open file for reading.
objTextFile = objFSO.OpenTextFile("c:\\HowToDemoFile.txt", ForReading);

// Use different methods to read contents of file.
sReadLine = objTextFile.ReadLine();
sRead = objTextFile.Read(4);
sReadAll = objTextFile.ReadAll();

objTextFile.Close();
				

텍스트 파일을 이동하고 복사하는 방법

FSO는 파일을 각각 이동하고 복사할 수 있는 MoveFileCopyFile 메서드를 제공합니다. 또한 File 개체를 사용하여 두 가지 동작을 각각 수행할 수 있습니다. File 개체의 인스턴스를 얻으려면 FSO의 GetFile 메서드를 호출합니다. 그러나 이 문서는 FSO에서 직접적인 메서드만 보여줍니다. File 개체 기술에 대한 자세한 내용은 "참조" 절을 참조하십시오.

다음 코드 예제는 이러한 메서드를 보여줍니다.

VBScript 코드
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

objFSO.MoveFile "c:\HowToDemoFile.txt", "c:\Temp\"
objFSO.CopyFile "c:\Temp\HowToDemoFile.txt", "c:\"
				
JScript 코드
var objFSO;
objFSO = new ActiveXObject("Scripting.FileSystemObject");

objFSO.MoveFile("c:\\HowToDemoFile.txt", "c:\\Temp\\");
objFSO.CopyFile("c:\\Temp\\HowToDemoFile.txt", "c:\\");
				

문제 해결

  • Scripting.FileSystemObject를 만드는 동안 오류 메시지 발생

    이 문제는 대부분 다음 시나리오 때문에 발생합니다.

    • ScrObj.dll이 구현 컴퓨터에 설치되지 않았습니다.
    • ScrObj.dll이 실수로 삭제되었습니다.
    • ScrObj.dll이 COM 레지스트리에서 실수로 등록 취소되었습니다.

    ScrObj.dll은 <Windows 설치 디렉터리>\System32 폴더에 있기 때문에 운영 체제 DLL(동적 연결 라이브러리)의 일부입니다. 따라서 Windows 2000 기반 컴퓨터에서는 시스템에 심각한 영향을 미치는 극단적인 방법을 사용하지 않고는 ScrObj.dll을 삭제할 수 없습니다.
  • 파일 조작 작업을 수행하는 동안 오류 메시지 발생

    드라이브가 NTFS 파일 시스템을 사용하여 포맷된 경우 관리자 그룹의 사용자는 전체 드라이브, 폴더 및 파일의 보안 사용 권한에 대한 제어 권한을 갖습니다. 특히 웹 서버에서 관리자는 파일과 정보에 대한 불법 액세스를 방지하기 위해 강력한 보안 사용 권한을 사용해야 합니다. 위에서 언급한 파일 조작 기술을 사용하는 ASP 응용 프로그램을 설계하고 작성할 때 불충분한 보안 사용 권한과 관련된 오류를 방지하기 위해 배포 컴퓨터에서 파일 시스템에 대한 보안 사용 권한을 부여하는 것을 특별히 고려해야 합니다.

출처 : support.microsoft.com
728x90

댓글