node.js初识06
node中的fs文件系统
var http = require("http");
var fs = require("fs");
var server = http.createServer(function(req,res){
var userid = parseInt(Math.random()*89999)+10000;//创建一个随机数
console.log("欢迎"+userid);
if(req.url == "/favicon.ico"){
return;//不加载浏览器窗口的小图标
}
res.writeHead(200,{"Content-type":"text/html;charset=UTF8"});
//两个参数,第一个是完整路径,当前目录./
//第二个就是回调函数
fs.readFile("./text.txt",function(err,data){
if(err){
throw err;
}
console.log("文件读取完毕"+userid);
res.end(data);
})
});
server.listen(3000,"127.0.0.1");
你可以把127.0.0.1换成你的ip,让其他电脑进行访问,并发请求大的时候,就可以发现node单线程的真是提现
var http = require("http");
var fs = require("fs");
var server = http.createServer(function(req,res){
if(req.url == "/favicon.ico"){
return;
}
// fs.mkdir("./aaa");//新建文件夹
// fs.stat("./text.txt",function(err,data){
// console.log(data.isDirectory());//判断是否是文件夹
// });
// 检查文件夹下的所有子文件夹
var wenjianjia=[];
fs.readdir("./aaa/",function(err,files){
// console.log(files);//file是一个数组,会把当前文件夹里所有的文件放在一个数组里
for (var i = 0; i < files.length; i++) {
var thefilename = files[i];
//检查是否是文件夹
fs.stat("./aaa/"+ thefilename,function(err,stats){
if(stats.isDirectory()){
wenjianjia.push(thefilename);
}
console.log(wenjianjia);
})
}
});
});
server.listen(3000,"127.0.0.1");
目录如下

node 05.js

这里你会发现没有bbb这个文件夹在数组里,这是因为异步的原因,解决方法就是把异步变成同步
如何把异步变同步呢
var http = require("http");
var fs = require("fs");
var server = http.createServer(function(req,res){
if(req.url == "/favicon.ico"){
return;
}
var wenjianjia=[];
fs.readdir("./aaa/",function(err,files){
(function iterator(i){//这个迭代器就是强行把异步变成同步的
if(i==files.length){
console.log(wenjianjia);
return;
}
fs.stat("./aaa/"+ files[i],function(err,stats){
if(stats.isDirectory()){
wenjianjia.push(files[i]);
}
iterator(i+1)
})
})(0)
});
});
server.listen(3000,"127.0.0.1");
这样最终输出的结果是

这样就是正确的了,你可以和上面的目录核对一下
node.js初识06的更多相关文章
- node.js系列笔记之node.js初识《一》
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...
- Node.js 教程 06 - 函数
前言: 本篇介绍的是Node.js中的函数,相对于上一篇会简单一点,其实和我们Javascript中的function无异. 好了,废话不多说了,我们进入正题吧. Node.js函数: [示例1:创建 ...
- Node.JS初识
对Node.JS的认识 1.Node 是一个服务器端 JavaScript 解释器: 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高 ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
- Node.js 初识2
原文:https://www.cnblogs.com/zzuIvy/p/nodejs_1.html 测试:node.js部署网站 1.创建js2.js var http = require('http ...
- Node.js 初识1
测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本
- python 全栈开发,Day54(node.js初识)
一.什么是Node.js 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事 ...
- node.js初识09
1.node_module文件夹 如果你的require中没有写./,那么Node.js将该文件视为node_modules目录下的一个文件. 2.package.json文件 如果使用文件夹来统筹管 ...
- node.js初识05
小项目,需求,通过url来查询学生学号和老师的编号 05.js var http = require("http"); var server = http.createServer ...
随机推荐
- Java高级工程师面试题总结及参考答案
一.面试题基础总结 1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解 ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意:垃圾回收回 ...
- 【每日dp】 Gym - 101889E Enigma 数位dp 记忆化搜索
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的 ...
- 配置llama实现impala on yarn-验证未通过,仅以此文作为参考
以下内容采自网络,目前验证未通过,仅以此作为参考: 简介:早期的Impala版本中,为了使用Impala,我们通常会在以Client/Server的结构在各个集群节点启动impala-server.i ...
- utf-8 utf8
mysql> DROP TABLE IF EXISTS student; Query OK, 0 rows affected (0.00 sec) mysql> create table ...
- 2017年蓝桥杯省赛A组c++第6题(字符串匹配算法填空)
/* 标题:最大公共子串 最大公共子串长度问题就是: 求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc" ...
- Linux下MySql的配置文件my.cnf详细 讲解
经常在使用MySql,但是对于MySql下面的各种参数的配置并不是很熟悉,经常在需要改变某项参数的时候,还要到处在网上查找,有点不方便.今天想把MySql下面的配置文件my.cnf详细的做一个说明(L ...
- Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类
一.安装hibernate tools插件 1.在线安装 通过Eclipse的Help->Install New Software 在线安装插件,插件连接为: eclipse helios(3. ...
- sdram 裸机程序
硬件平台 :JZ2440 实现功能:将led闪烁代码从2440的2k sram中拷贝到sdram start.s --> 上电初始化,拷贝代码 sdram.c --> ...
- webmin小结
centos7安装webmin https://www.cnblogs.com/andy9468/p/10537201.html webmin重置密码 重置webmin账户root的密码为例: htt ...
- MySQL数据库改名的三种方法
前不久去面试,被问到Innodb引擎的表如何改数据库名,当时我也只回答了MyISAM改如何操作,被一些细节问题打败,真是操蛋. 如果表示MyISAM那么可以直接去到数据库目录mv就可以. Innodb ...