해당 글은 군대에 있을 때 작성한 글을 기반으로 작성되었습니다.


해당 내용은 ActiveXObject를 이용하는 거라 오직 익스플로러에서만 작동합니다.


이번에도 자바스크립트 글입니다. FileReader 객체를 이용한 웹표준적인 방법이 아니라 Scripting.FileSystemObject를 사용하는 비표준이라 써먹을 곳이 거의 없을 겁니다;;


이번에도 예제부터.. 편의상 예외처리는 하지 않았습니다. 다른 건 몰라도 파일입출력 시에는 중간에 오류가 발생해서 파일을 닫지 못했을 경우 익스플로러를 닫기 전까지 해당 파일 삭제가 안되므로 예외를 꼭 적용하는 게 좋습니다.


var fso = new ActiveXObject('Scripting.FileSystemObject');
var wsh = new ActiveXObject('WScript.Shell');
var path = wsh.ExpandEnvironmentStrings('%USERPROFILE%\\Desktop\\test.txt');
var file = fso.CreateTextFile(path);	// 바탕화면에 파일생성
file.Write('사용자 입력:\r\n');	// 파일 쓰기
file.Write(prompt('텍스트를 입력하세요', ''));
file.Close();
file = fso.OpenTextFile(path);	// 파일 열기
var text = '';
while (!file.AtEndOfStream)	// 파일 읽기
	text += file.ReadLine() + '\n';
alert(text);
file.Close();

위 코드를 실행시키면 메시지를 입력할 수 있는 프롬프트 창이 뜨고 메시지를 입력하면 그 내용이 바탕화면의 test.txt 파일로 생성된 뒤 파일 내용이 메시지창으로 뜰 겁니다.


각 줄 별로 설명을 드리겠습니다.

3. FileSystemObject는 환경변수를 인식하지 못합니다. 환경변수를 인식하기 위해서 WScript의 ExpandEnvironmentStrings 메소드를 이용했습니다.

5. 윈도우에선 줄바꿈 문자가 "\r\n"입니다. 처음에 자꾸 줄바꿈이 안돼서 이것저것 연구하다가 알아냈네요. 자동으로 처리할 줄 알았건만;;;

7,13. 파일을 열었으면 완료 후 반드시 닫아줘야 합니다. 안 닫아주면 익스플로러를 닫기 전까지 파일 수정 불가.

9-12. 파일의 끝을 만날 때까지 한줄한줄 읽어서 출력하는 부분인데 alert(file.ReadAll()); 한 줄로 대체 가능합니다. ReadAll 메소드는 파일을 통째로 읽어서 반환합니다.


파일입출력 관련해서는 제가 딱 필요한 부분만 검색해서 가지고 오다 보니까 부족한 부분이 많습니다. 나머지는 검색을 통해서 알아보세요.


마지막으로 FileSystemObject의 다양한 메소드 소개를 마지막으로 글을 마치겠습니다.

FileExists(파일경로) - 파일의 존재 유무 반환

CopyFile(파일1, 파일2) - 파일1을 파일2로 복사

DeleteFile(파일경로) - 파일 삭제

FolderExists(폴더경로) - 폴더의 존재 유무 반환

CopyFolder(폴더1, 폴더2) - 폴더1을 폴더2로 복사

CreateFolder(폴더경로) - 폴더 생성

DeleteFolder(폴더경로, true) - 폴더 삭제. 두번째 인자는 읽기전용 폴더도 삭제할지 여부

+ Recent posts