win8 metro风格网站后台管理模板,河南省建设监理协会网站证书查询,运营好网站,百度网站内容FileSystem对象中包含文件和文件夹的一些基本和常见的操作接口。比如#xff1a;判断路径是否存在、创建文件夹、创建文件、读取文件等等。他的出现可以取代文件流对txt或csv等文件的操作。官方文档网址#xff1a;https://open.wps.cn/previous/docs/client/wpsLoad#xf…FileSystem对象中包含文件和文件夹的一些基本和常见的操作接口。比如判断路径是否存在、创建文件夹、创建文件、读取文件等等。他的出现可以取代文件流对txt或csv等文件的操作。官方文档网址https://open.wps.cn/previous/docs/client/wpsLoad可点击wps宏编辑器中的帮助进入
一、在wps编辑器中查看FileSystem中的属性和方法
function Main(){for(let key in FileSystem){console.log(方法/属性名称 key 类型 typeof FileSystem[key])}
}
效果图如下所示 官方文档说明表格如下所示
名称说明 AppendFile 往文件末尾添加数据 copyFileSync 生成文件副本 Exists 判断一个文件和文件夹是否存在。 existsSync 判断目录是否存在 Mkdir 根据给定的path创建一个文件夹。 mkdirSync 创建目录 mkdtempSync 创建临时目录 readAsBinaryString 读取指定路径的文件返回二进制字符串数据。 readdirSync 获取目录下的子目录对象数组包含目录相关属性 ReadFile 获取文件的内容 readFileString 读取指定路径的文件返回字符串。 Remove 删除指定的path所代表的文件或文件夹。 rmdirSync 删除目录 tmpdir 获取系统的临时文件目录 unlinkSync 删除文件 writeAsBinaryString 写二进制字符串对象到指定文件。 WriteFile 创建文件 writeFileString 写字符串到指定路径的文件。
二、代替Open文件流的方法详解
1、WriteFile方法
官方文档给出的语法express.WriteFile(FilePath)
然而如果你按照该语法调用会发现 是的他还有第二个参数。没办法WPS的官方文档就是这样不能全信但还是要看。
他的第二个参数data是你要写入的内容如果创建空文件传入空字符串即可。
function Main(){let path E:\\w_js\\新建;FileSystem.WriteFile(path \\myText.txt, mydata);
} 当文件不存在时会新建文件上述代码中如果myText.txt文件不存在于文件夹新建中就会新建一个名称时myText.txt的文件并写入mydata。
当文件已经存在执行该方法时也不会报错提示文件已经创建而是直接向已有文件中写入数据。
所以官方文档中对WriteFile方法的解释存在问题它不仅可以创建文件也可以向文件中写入数据。
此外WriteFile方法是有返回值的返回值是boolean值始终是ture没什么用。
2、writeFileString方法
官方文档给出的语法express.writeFileString(FilePath, data)
如下图所示该语法是正确的 然而出乎意料的是它的作用与WriteFile一模一样连返回值都是一样的。好在写入内容不会像文件流一样在文本的两端添加双引号。
3、writeAsBinaryString方法
语法与上述两个方法一致使用方法也近乎相同。不同的是它可以写入二进制字符串对象到指定文件。示例如下
function Main(){let path E:\\w_js\\新建;const buffer new ArrayBuffer(5);const binaryData new Uint8Array(buffer);[72, 101, 108, 108, 111].forEach((i, index){binaryData[index]i});FileSystem.writeAsBinaryString(path \\my.txt, binaryData);
}
显然上述给出的是Hello的字符串编码效果却是Hl 是的稀奇古怪的bug又出现了不过它可以使用。你不用他写入二进制字符串对象就好了。
4、追加数据的AppendFile方法
它的语法与WriteFile一致只不过第二个参数表示追加的数据。
function Main(){let path E:\\w_js\\新建\\my.txt;console.log(FileSystem.AppendFile(path, 10001));
} 输出两次true说明执行了两次可以看到追加了两次10001.
三、判断文件或路径是否存在
1、判断文件或文件夹是否存在的Exists方法
//判断文件夹是否存在
function Main(){let path E:\\w_js\\新建;console.log(FileSystem.Exists(path));
}//判断文件是否存在
function Main1(){let path E:\\w_js\\新建;console.log(FileSystem.Exists(path \\my.txt));
}
如果存在输出true不存在输出false。
2、判断目录是否存在的existsSync方法
existsSync与Exists的语法结构完全一致用法也相同输出结果也相同。
四、目录的创建与删除
1、创建文件夹的Mkdir方法
语法与全局方法MkDir相似但是创建不成功会输出false也就是当你尝试使用它创建多层目录时会输出false。
function Main(){let path E:\\w_js\\新建\\my;console.log(FileSystem.Mkdir(path));console.log(FileSystem.Mkdir(E:\\w_js\\新建\\my1\\my\\my\\my));
} 此外还有一个作用与Mkdir完全相同的方法mkdirSync。
2、删除目录的rmdirSync
语法与Mkdir类似只有一个参数path。如果成功删除会输出true没有成功删除会输出false。
function Main(){let path E:\\w_js\\新建\\my;console.log(FileSystem.rmdirSync(path));console.log(FileSystem.rmdirSync(E:\\w_js\\新建\\my1\\my\\my\\my));
}
与RmDir相同它也只能删除空目录空文件夹而且只能删除一层。
3、删除文件的unlinkSync
它只有一个文件路径作为他的参数。示例如下
function Main(){console.log(FileSystem.unlinkSync(E:\\w_js\\新建\\my1.txt));
}
如果my1.txt文件存在会输出true表示删除成功文件不存在会输出false。
五、文件的读取
1、ReadFile方法
function Main(){console.log(FileSystem.ReadFile(E:\\w_js\\新建\\myText.txt));
}
注意点它在读取文件时有可能只读取出第一个字符或者读取乱码。下面是up操作的三个示例图 可见只有最后一个示例它正确无误的读取了文件中的内容。据up分析与测试该方法可能只适用于读取通过二进制写入的文件。至于具体是什么原因造成的up也不知道官方文档中也没有明确的解释。
2、readFileString方法
function Main(){let path E:\\w_js\\新建\\myText1.txtconsole.log(FileSystem.readFileString(path));console.log(FileSystem.readFileString(E:\\w_js\\新建\\my.txt));
} 注意该方法不适用于读取二进制文件会导致乱码
3、readAsBinaryString方法
function Main(){let path E:\\w_js\\新建\\myText1.txtconsole.log(FileSystem.readAsBinaryString(path));console.log(FileSystem.readAsBinaryString(E:\\w_js\\新建\\my.txt));
}
readAsBinaryString方法官方文档有解释用于读取指定文件返回二进制字符串数据。事实也确实如此 4、ReadFileAsArrayBuffer方法
function Main(){let path E:\\w_js\\新建\\myText1.txtconsole.log(JSON.stringify(FileSystem.ReadFileAsArrayBuffer(path)));
} 很明显它返回的是一个ArrayBuffer数据。通过处理这个数据最终可以获取文件中的内容。
六、总结
虽然该对象中的某些方法存在一些bug但总的来说操作文本文件或者csv文件比文件流好用许多。对于JS宏来说已经够用了大家就将就将就。祝大家玩的开心。