自学内容网 自学内容网

JS宏实例:自创FS对象读取文本文件或CSV文件数据

在js宏进阶专栏中,详细的讲解了面向对象编程的一些基础知识,比如ES6类、构造函数、this指向性等等。并且详细介绍了JS宏中自带的文件系统FileSystem对象。今天,我们运用这些知识,对JS宏中的FileSystem对象进行加强与优化,开发出我们自己的文件系统FS。再利用FS来替代FileSystem对象读取或写入文件。

一、为什么要增强FileSystem

1、没有报错提示

JS宏中的FileSystem没有明确的报错,只是给一个boolean值做一个返回值,然而,在创建文件或目录时我们并不需要这样的返回值。其他高级语言中会有明确的报错提示,比如python,示例如下:

import os

os.mkdir(r'.\a\b')

如果给出详细的报错,方便我们捕获异常,随后对异常进行处理。

2、存在一些bug或方法名称不规范

比如:FileSystem.WriteFile方法,官方文档的解释是用于创建一个文件,且只有一个参数path,而实际上它有第二个参数data,就是你要写入的内容。经过测试,它不仅可以创建文件,还可以向指定文件中写入内容,而WriteFile从方法名上面来看,容易使开发者造成误解。因此文件的创建与写入方法应该分开定义。所以我们需要对他进行优化

3、缺少递归创建文件或文件夹的方法

在JS宏的文件系统中,并没有提供递归创建文件夹或文件的相关方法,因此我们需要自行编写逻辑定义。

二、优化思路

明确了JS宏中的文件系统的不足之处,我们可以针对它做一些改进。本次案例将采用ES6类的语法来定义。

1、自定义详细的报错信息

既然JS宏中缺少相关的报错信息,那么我们可以自己定义。根据JS宏进阶篇章的内容,我们可以通过继承JS自带的Error对象来定义报错信息,示例如下:

//定义报错类型FileNotFound
class FileNotFound extends Error {
    constructor(message) {
        super(message);
        this.name = "FileNotFoundError";
    }
}

//定义报错类型文件已存在
class FileExists extends Error {
constructor(message) {
        super(message);
        this.name = "FileExistsError";
    }
}

有了我们定义的两种报错,我们就要运用到接下来的开发之中。例如:找不到文件,我们可以调用FileNotFound 来抛出异常。

2、构思优化逻辑

在这之前,我们需要定义FS对象,如下所示:

class FS {

constructor() {}

}

如果你需要节约内存,那么我们可以开启单例模式:

class FS {

    static instance = null;

constructor() {
        if (FS

原文地址:https://blog.csdn.net/jackispy/article/details/145206351

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!