D:\NodeJs\node>npm install iconv-lite
上面为了支持中文?
//由于Node.js仅支持如下编码:utf8, ucs2, ascii, binary, base64, hex,并不支持中文GBK或GB2312之类的编码,
//因此如果要读写GBK或GB2312格式的文件的中文内容,必须要用额外的模块:iconv-lite
var rf=require("fs");
var data=rf.readFileSync("D:\\NodeJs\\node\\test.txt","utf-8");
console.log(data);
console.log("READ FILE SYNC END");
var rf=require("fs");
rf.readFile("D:\\NodeJs\\node\\test.txt",'utf-8',function(err,data){
if(err){
console.log("error");
}else{
console.log(data);
}
});
console.log("READ FILE ASYNC END");
// 加载File System读写模块
var fs = require('fs');
// 加载编码转换模块
var iconv = require('iconv-lite');
var file = "D:\\NodeJs\\node\\test.txt";
writeFile(file);
function writeFile(file){
// 测试用的中文
var str = "\r\n我是一个人Hello myself!";
// 把中文转换成字节数组
var arr = iconv.encode(str, 'utf-8');
console.log(arr);
// appendFile,如果文件不存在,会自动创建新文件
// 如果用writeFile,那么会删除旧文件,直接写新文件
fs.appendFile(file, arr, function(err){
if(err)
console.log("fail " + err);
else
console.log("写入文件ok");
});
}
var fs = require('fs')
//遍历文件夹,获取所有文件夹里面的文件信息
/*
* @param path 路径
*
*/
function geFileList(path)
{
var filesList = [];
readFile(path,filesList);
return filesList;
}
//遍历读取文件
function readFile(path,filesList)
{
files = fs.readdirSync(path);//需要用到同步读取
files.forEach(walk);
function walk(file)
{
states = fs.statSync(path+'/'+file);
if(states.isDirectory())
{
readFile(path+'/'+file,filesList);
}
else
{
//创建一个对象保存信息
var obj = new Object();
obj.size = states.size;//文件大小,以字节为单位
obj.name = file;//文件名
obj.path = path+'/'+file; //文件绝对路径
filesList.push(obj);
}
}
}
//写入文件utf-8格式
function writeFile(fileName,data)
{
fs.writeFile(fileName,data,'utf-8',complete);
function complete()
{
console.log("文件生成成功");
}
}
var filesList = geFileList("D:\\NodeJs\\node");
filesList.sort(sortHandler);
function sortHandler(a,b)
{
if(a.size > b.size)
return -1;
else if(a.size < b.size) return 1
return 0;
}
var str='';
for(var i=0;i<filesList.length;i++)
{
var item = filesList[i];
var desc ="文件名:"+item.name + " "
+"大小:"+(item.size/1024).toFixed(2) +"/kb"+" "
+"路径:"+item.path;
str+=desc +"\n"
}
writeFile("test.txt",str);