app.js
// 判斷伺服器上有沒有upload目錄,如果沒有建立這個目錄,如果有的話不做操作。
const fs=require('fs');
var path='./upload'
fs.stat(path,(err,data)=>{
if(err){
// 執行建立目錄
mkdir(path)
return;
}
if(!data.isDirectory()){
// 首先删除檔案,再去執行建立目錄
fs.unlink(path,(err)=>{
if(!err){
mkdir(path)
}else {
console.log('請檢查傳入的資料是否正确')
}
})
})
function mkdir(dir){
fs.mkdir(dir,(err)=>{
if(err){
console.log(err)
return;
}
})
}
或者用mkdirp這個子產品
var mkdirp=require('mkdirp');
mkdirp('./upload/aaa/xxxx').then(made=>{
console.log(`made directories, starting with ${made}`)
------------------------------------------------------
www檔案夾下有images css js 以及index.html,找出wwwroot目錄下的所有目錄,然後組成一個數組傳回
第一種方法用遞歸解決:
const fs=require('fs')
var path='./wwwroot'
var dirArr=[]
fs.readdir(path,(err,data)=>{
console.log(err)
// console.log(data)
(function getDir(i){
if(i==data.length){ // 執行完成
console.log(dirArr)
return
fs.stat(path+'/'+data[i],(error,stats)=>{
if(stats.isDirectory()){
dirArr.push(data[i])
getDir(i+1)
})(0)
第二種方法用async await解決:
// 1、定義一個isDir的方法判斷一個資源到底是目錄還是檔案
// 2、擷取wwwroot裡面的所有資源,循環周遊
async function isDir(path){
return new Promise((resolve,reject)=>{
fs.stat(path,(error,stats)=>{
if(error){
console.log(error)
reject(error)
return;
}
if(stats.isDirectory()){
resolve(true)
}else {
resolve(false)
})
})
function main(){
var path='./wwwroot'
var dirArr=[]
fs.readdir(path,async (err,data)=>{
console.log(err);
for(var i=0;i<data.length;i++){
if(await isDir(path+'/'+data[i])){
console.log(dirArr)
main()
-----------------------------------------------------------
讀取流:
var readStream=fs.createReadStream('./data/input.txt')
var count=0;
var str='';
readStream.on('data',(data)=>{
str+=data;
count++
readStream.on('end',(data)=>{
console.log(str)
console.log(count)
readStream.on('error',(err)=>{
console.log(err)
寫入流:
for(var i=0;i<500;i++){
str+='我是從資料庫擷取的資料,我要儲存起來\n'
var writeStream=fs.createWriteStream('./data/output.txt')
writeStream.write(str)
// 标記寫入完成,寫上這句才能觸發finish
writeStream.end();
writeStream.on('finish',()=>{
console.log('寫入完成')
管道流:
var readStream=fs.createReadStream('./1.png')
var writeStream=fs.createWriteStream('./data/a.jpg')
readStream.pipe(writeStream)