zoukankan      html  css  js  c++  java
  • 【Node】fs

    var fs = require('fs') // fs 文件系统
    var stdin = process.stdin
    var stdout = process.stdout
    var stats = []
    
    fs.readdir(process.cwd(), function(err, files) {
        console.log('')
        if (!files.length) {
            return console.log('    03[31m No files to show!03[39
    ')
        }
        console.log('    Select which file or directory you want to see
    ')
    
        function file(i) {
            var filename = files[i]
            fs.stat(__dirname + '/' + filename, function(err, stat) { // fs.stat会给出文件或目录的元数据
                stats[i] = stat
                if (stat.isDirectory()) {
                    console.log('    '+i+'    33[36m' + filename + '/33[39m')
                } else {
                    console.log('    '+i+'    33[90m' + filename + '/33[39m')
                }
                if (++i == files.length) {
                    read()
                } else {
                    file(i)
                }
            })
        }
        function read() {
            console.log('')
            stdout.write('    33[33mEnter you choice: 33[39m')
            stdin.resume()
            stdin.setEncoding('utf-8')
            stdin.on('data', option)
        }
    
        function option(data) {
            var filename = files[Number(data)]
            if (!filename) {
                stdout.write('   33[31mEnter your choice: 33[39m')
            } else {
                stdin.pause()
                if (stats[Number(data)].isDirectory()) {
                    fs.readdir(__dirname + '/' + filename, function(err, files) {
                        console.log('')
                        console.log('    (' + files.length + ' files)')
                        files.forEach(function(file) {
                            console.log('    -    ' + file)
                        })
                        console.log('')
                    })
                } else {
                    fs.readFile(__dirname + '/' + filename, 'utf-8', function(err, data) {
                        console.log('')
                        console.log('33[90m' + data.replace(/(.*)/g, '    $1') + '33[39m')
                    })
                }
            }
        }
    
        file(0)
    })

    console.log('Hello world')
    process.stdout.write('Hello world')
    console.log('Hello world')

    console.log内部做了这样的事情:它在指定的字符串后加上 (换行)字符,并将其写到stdout流中

  • 相关阅读:
    WPF 基础到企业应用系列1——开篇有益
    WPF 基础到企业应用系列2——WPF前世今生
    “云计算之旅”筹备完成,意见征询!
    31天重构学习笔记30. 尽快返回
    作为资深程序员,必定会掌握的十句谎话
    TaffyDB Writing queries
    TAFFY Working with data
    2012年全球最愚蠢的设计第一是微软,第二还是微软
    TaffyDB Introduction
    TaffyDB Beginner's Guide
  • 原文地址:https://www.cnblogs.com/jzm17173/p/3438609.html
Copyright © 2011-2022 走看看