mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-02-11 09:24:58 +00:00
Update file.js
This commit is contained in:
parent
3baaf8dd2b
commit
de20821b98
129
lib/file.js
129
lib/file.js
|
@ -4,25 +4,18 @@
|
|||
//
|
||||
// Common routines. Defines LIB object which contains the API, as well as
|
||||
// a global console.log function.
|
||||
|
||||
// with the PIPE based IPC (lib/pipe-ipc.js)
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
var LIB = require("lib/std");
|
||||
var PipeIPC = require("lib/pipe-ipc");
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// Private APIs / Utility functions
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// StreamTypeEnum
|
||||
// https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/streamtypeenum?view=sql-server-ver16
|
||||
var adTypeBinary = 1;
|
||||
var adTypeText = 2;
|
||||
|
||||
// SaveOptionsEnum
|
||||
// https://learn.microsoft.com/en-us/sql/ado/reference/ado-api/saveoptionsenum?view=sql-server-ver16
|
||||
var adSaveCreateNotExist = 1;
|
||||
var adSaveCreateOverWrite = 2;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
// fileExists
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -61,29 +54,9 @@ function fileGet(FN) {
|
|||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function readFile(FN, charset) {
|
||||
if(typeof(charset) === "undefined") {
|
||||
var FSO = CreateObject("Scripting.FileSystemObject");
|
||||
var T = null;
|
||||
try {
|
||||
var TS = FSO.OpenTextFile(FN, 1);
|
||||
if (TS.AtEndOfStream) return "";
|
||||
T = TS.ReadAll();
|
||||
TS.Close();
|
||||
TS = null;
|
||||
} catch (e) {
|
||||
console.log("ERROR! " + e.number + ", " + e.description + ", FN=" + FN);
|
||||
}
|
||||
FSO = null;
|
||||
return T;
|
||||
} else {
|
||||
var fsT = CreateObject("ADODB.Stream");
|
||||
fsT.CharSet = charset;
|
||||
fsT.Open();
|
||||
fsT.LoadFromFile(FN);
|
||||
T = fsT.ReadText();
|
||||
fsT = null;
|
||||
return T;
|
||||
}
|
||||
var pipe = PipeIPC.create();
|
||||
pipe.setCharset(charset);
|
||||
return pipe.readTextFromFile(FN);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -92,60 +65,12 @@ function readFile(FN, charset) {
|
|||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function writeFile(FN, content, charset) {
|
||||
var Stream_No_UTF8_BOM = function(objStream) {
|
||||
var _objStream = CreateObject("ADODB.Stream");
|
||||
_objStream.Type = 1;
|
||||
_objStream.Mode = 3;
|
||||
_objStream.Open();
|
||||
objStream.Position = 3;
|
||||
objStream.CopyTo(_objStream);
|
||||
objStream.Flush();
|
||||
//objStream.Close();
|
||||
return _objStream;
|
||||
};
|
||||
var ok = false;
|
||||
|
||||
while (!ok) {
|
||||
// [lib/file] Can not overwrite a file with ADODB.Stream SaveToFile() #32
|
||||
require("lib/shell").exec(["del", FN]);
|
||||
|
||||
// ascii:Scripting.FileSystemObject, unicode:ADODB.Stream
|
||||
if (charset) {
|
||||
console.log("WRITE TO DISK USING ADODB.Stream CHARSET " + charset);
|
||||
try {
|
||||
var fsT = CreateObject("ADODB.Stream");
|
||||
fsT.Type = 2; // save as text/string data.
|
||||
fsT.Charset = charset; // Specify charset For the source text data.
|
||||
fsT.Open();
|
||||
fsT.WriteText(content);
|
||||
if (charset == "utf-8") {
|
||||
Stream_No_UTF8_BOM(fsT).SaveToFile(FN, 2); // save as binary to disk
|
||||
} else {
|
||||
fsT.SaveToFile(FN, 2); // save as binary to disk
|
||||
}
|
||||
fsT.Close();
|
||||
fsT = null;
|
||||
ok = true;
|
||||
} catch (e) {
|
||||
console.log("ADODB.Stream: ERROR! " + e.number + ", " + e.description + ", FN=" + FN);
|
||||
}
|
||||
} else {
|
||||
console.log("WRITE TO DISK USING OpenTextFile CHARSET ascii");
|
||||
var FSO = CreateObject("Scripting.FileSystemObject");
|
||||
try {
|
||||
var TS = FSO.OpenTextFile(FN, 2, true, 0); // ascii
|
||||
TS.Write(content);
|
||||
TS.Close();
|
||||
TS = null;
|
||||
ok = true;
|
||||
} catch (e) {
|
||||
console.log("OpenTextFile: ERROR! " + e.number + ", " + e.description + ", FN=" + FN);
|
||||
}
|
||||
FSO = null;
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
var pipe = PipeIPC.connect(PipeIPC.createUUIDv4().substring(0, 8));
|
||||
pipe.setCharset(charset);
|
||||
pipe.startRecorder(FN, PipeIPC.ForWriting);
|
||||
pipe.write(content);
|
||||
pipe.destroy();
|
||||
return true;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -154,7 +79,7 @@ function writeFile(FN, content, charset) {
|
|||
|
||||
function writeBinaryFile(FN, DATA) {
|
||||
var BinaryStream = CreateObject("ADODB.Stream");
|
||||
BinaryStream.Type = adTypeBinary;
|
||||
BinaryStream.Type = PipeIPC.adTypeBinary;
|
||||
BinaryStream.Open();
|
||||
BinaryStream.Write(DATA);
|
||||
BinaryStream.SaveToFile(FN, adSaveCreateOverWrite);
|
||||
|
@ -210,19 +135,24 @@ function deleteFile(FN) {
|
|||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
function includeFile(FN) {
|
||||
var fso = CreateObject("Scripting.FileSystemObject");
|
||||
var fileStream = fso.openTextFile(FN);
|
||||
var fileData = fileStream.readAll();
|
||||
fileStream.Close();
|
||||
eval(fileData);
|
||||
eval(readFile(FN));
|
||||
}
|
||||
|
||||
function appendFile(FN, content, charset) {
|
||||
if (fileExists(FN)) {
|
||||
return writeFile(FN, readFile(FN, charset) + content, charset);
|
||||
} else {
|
||||
return writeFile(FN, content, charset);
|
||||
}
|
||||
var pipe = PipeIPC.connect("write");
|
||||
pipe.setCharset(charset);
|
||||
pipe.startRecorder(FN, PipeIPC.ForAppending);
|
||||
pipe.write(content);
|
||||
pipe.destroy();
|
||||
}
|
||||
|
||||
function rotateFile(FN, content, numOfLines, charset) {
|
||||
var pipe = PipeIPC.connect("write");
|
||||
pipe.setCharset(charset);
|
||||
pipe.setMaxSentences(numOfLines);
|
||||
pipe.startRecorder(FN, PipeIPC.ForAppending);
|
||||
pipe.write(content);
|
||||
pipe.destroy();
|
||||
}
|
||||
|
||||
exports.fileExists = fileExists;
|
||||
|
@ -237,7 +167,8 @@ exports.deleteFolder = deleteFolder;
|
|||
exports.deleteFile = deleteFile;
|
||||
exports.includeFile = includeFile;
|
||||
exports.appendFile = appendFile;
|
||||
exports.rotateFile = rotateFile;
|
||||
|
||||
exports.VERSIONINFO = "File Lib (file.js) version 0.2.1";
|
||||
exports.VERSIONINFO = "File Library (file.js) version 0.2.3";
|
||||
exports.global = global;
|
||||
exports.require = global.require;
|
||||
|
|
Loading…
Reference in New Issue
Block a user