해당 글은 군대에 있을 때 작성한 글을 기반으로 작성되었습니다.
해당 내용은 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) - 폴더 삭제. 두번째 인자는 읽기전용 폴더도 삭제할지 여부
'프로그래밍 > 웹' 카테고리의 다른 글
[자작] 구글검색 기간설정 메뉴추가 유저스크립트 (5) | 2019.01.08 |
---|---|
[PHP] 서버 접속 여부 확인 (0) | 2018.11.11 |
[JavaScript] 메시지창 없이 바로 닫기 (0) | 2018.11.05 |
[HTA] HTA (HTML Application)란? (0) | 2018.11.04 |
[JavaScript] 아래아한글 문서 편집하기 (2) | 2018.10.30 |
[JavaScript] 외부 프로그램 실행하기 (4) | 2018.10.29 |
[JavaScript] IE6 죽이는 스크립트 (0) | 2011.07.24 |
[JavaScript] 창닫기, 뒤로, 앞으로, 새로고침 (0) | 2011.01.01 |