乐趣区

path以及fs相关模块

path 模块

__dirname: 获取当前文件的绝对路径 目录

__filename: 获取当前文件的路径

ctx.body = {
        dirName: __dirname, 
        fileName: __filename 
}
//{"dirName":"D:\\WEB\\koa_proj","fileName":"D:\\WEB\\koa_proj\\app.js"}

path.join(p1, p2):用于路径的拼接

//"D:\\WEB\\koa_proj\\file.txt"
path.join(__dirname, '/file.txt');

path.basename(path, ext):用于获取路径中的文件名包括后缀名

/**
ext 文件后缀名, 如.txt,带有此参数则获取的是文件名称,不包括后缀
**/
let filePath = path.join(__dirname, '/file.txt')
path.basename(filePath)//"file.txt"
path.basename(filePath, '.txt')//"file"

path.dirname(path): 用于获取一个完整文件路径的目录名称, 类似__dirname

let filePath = path.join(__dirname, '/file.txt');
//"D:\\WEB\\koa_proj"
path.dirname(filePath)

path.delimiter: 分隔符,在 windows 系统中为 ’;’, 在 linux 中为 ’:’

path.extname(p):用于获取文件的或者名

path.extname(filePath)//".txt"

path.parse(p):用于解析一个文件的路径,生成一个包括目录、文件名称、文件后缀的对象

path.parse(filePath)
/*
{
    "root":"D:\\",
    "dir":"D:\\WEB\\koa_proj",
    "base":"file.txt",
    "ext":".txt",
    "name":"file"
}
*/

path.format:用于将一个对象转换为对应的路径, 与 path.parse 过程相反

path.isAbsolute(p): 用于判定换个文件是相对路径还是绝对路径

path.normalize(p): 根据不同的操作系统输出文件路径 \,/ 同时会将路径中不一致的分隔符统一处理

path.normalize('D:/WEB\\koa_proj') //"normalizePath":"D:\\WEB\\koa_proj"

path.relative(from, to):用于获取从 from 路径到 to 路径的相对路径

path.resolve(p1, p2): 用于路径拼接,获取的总是相对与应用的绝对路径,path.resolve:** 以 / 作为跟路径,因此做字符串拼接的时候会以最后一个 /file 作为基准

path.resolve(__dirname, './public','./file.txt')
//"D:\\WEB\\koa_proj\\public\\file.txt"

path.sep: 获取当前系统的文件路径操作符号,在 window 中为 ’//’

app.use(route.get('/index', async ctx => {console.log(__dirname);
    console.log(__filename);
    ctx.body = {
        dirName: __dirname,
        fileName: __filename ,
        filePath: path.join(__dirname, './file.txt'),
        extFileName: path.basename(filePath, '.txt'),
        dirPathName: path.dirname(filePath),
        pathObj: path.parse(filePath),
        normalizePath: path.normalize('D:/WEB\\koa_proj'),
        relativePath: path.relative(path.join(__dirname, 'file.txt'), path.join(__dirname, '/js/file.js')),
        jsPath: path.join(__dirname, relativePath),
        resolvePath: path.resolve(__dirname, './public','./file.txt'),
        resolvePath2: path.resolve(__dirname, '/js/index.js', '/css/index.css'),
        sep: path.sep
    }
}));

fs 模块

fs.statSync(p, callback):用于检测某个文件是否存在,当文件不存在的时候会报错:no such file or directory, stat ‘D:WEBkoa_projfile.txt’

fs.statSync(__filename);
{"dev":2585188530,"mode":33206,"nlink":1,"uid":0,"gid":0,"rdev":0,"ino":844424930559515,"size":777,"atimeMs":1526185196399,"mtimeMs":1526185196399,"ctimeMs":1526185196399,"birthtimeMs":1524389744769,"atime":"2018-05-13T04:19:56.399Z","mtime":"2018-05-13T04:19:56.399Z","ctime":"2018-05-13T04:19:56.399Z","birthtime":"2018-04-22T09:35:44.769Z"}

fs.writeFileSync(p, data):用于给一个文件写数据,如果文件不存在则会创建对应的文件

fs.writeFileSync(path.join(__dirname, './index.js'), 'hello word')

fs.appendFileSync(p, data[,option]):用于向一个文件追加内容,如果文件不存在则会进行创建

fs.appendFileSync(path.join(__dirname, './index.js'), 'hi');

fs.unlink(p):用于删除文件,当文件不存在或者删除失败的时候报错

fs.unlinkSync(path.join(__dirname, './index.js'));

fs.readFileSync(p[,option]): 用于读取文件内容

/*
* 当不指定编码格式时读出来的数据为 Buffer
*/
fs.readFileSync(path.join(__dirname, './index.js'), 'utf-8');

fs.renameSync(oldPath, newPath):用于移动或者重新命名文件, 当移动目录的时候目录必须存在

fs.renameSync(path.join(__dirname, './index.js'), path.join(__dirname, './index2.js'));

fs.mkdir(p, name):用于创建一个目录, 创建的目录必须不存在,否则会报错

fs.mkdirSync(path.join(__dirname, 'test'));

fs.rmdirSync(p):用于删除一个文件目录

 fs.rmdirSync(path.join(__dirname, './test'));

fs.readdirSysn(p):用于读取目录下的文件及目录

fs.readdirSync(path.join(__dirname, './js')); 
退出移动版