node遍历给定目录下特定文件,内容合并到一个文件
遍历目录用了fs.readdir这个异步方法,得到当前目录下所有的文件和目录的一个数组。
然后判断:
if文件,并且后缀符合设定的规则(本文例子是符合后缀ts,js)直接用同步方法写入,
if目录,继续调用这个方法递归。
const fs = require('fs');
const path = require('path');
/*
需要遍历的目录
这里写了绝对路径
*/
const sourceDir = '/Users/xiaochong/workspace/game/phonics2/assets';
/*
合并后的目标文件路径
*/
const targetFile = './lp2.txt';
function getDirFilePathArr(dir) {
fs.readdir(dir,(err,fileArrLike)=>{
if(err) {
console.log(err);
return;
}
fileArrLike.forEach((filename)=>{
fs.stat(path.join(dir,filename),(err, stats)=> {
if (err) throw err;
if(stats.isFile()) {
if (path.extname(filename) === '.ts' ||path.extname(filename) === '.js') {
let filePath = path.join(dir,filename);
console.log(filePath);
//同步方法:往目标文件targetFile里写入
appendContentSync(targetFile,filePath)
}
}else{//目录,递归
getDirFilePathArr(path.join(dir,filename));
}
})
})
})
}
function appendContentSync(targetFile,file){
let content = fs.readFileSync(file, 'utf-8');
fs.appendFileSync(targetFile, content)
}
getDirFilePathArr(sourceDir);
node遍历给定目录下特定文件,内容合并到一个文件的更多相关文章
- 通过java 来实现对多个文件的内容合并到一个文件中
现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...
- Linux 父子进程实现复制文件内容到另一个文件内
1. 子进程先拷贝前一半 ,父进程一直阻塞到子进程拷贝完再拷贝后一半 /* 子进程先拷贝前一半文件,父进程先阻塞等待子进程拷贝完前一半内容, * 然后父进程在拷贝,后一半内容 * */ #includ ...
- 多个excel文件内容合并到一个excel文件的多个sheet的小程序
# -*- coding:utf-8 -*- import xlrd, xlsxwriter # 待合并excelallxls = ["D:\\excelcs\\***.xlsx" ...
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
(转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...
- Linux下如何遍历指定目录下的所有文件并删除指定天数之前创建的文件
脚本内容如下: #!/bin/bash function delete_file { days=$[$-] for i in `find $dir -type f -ctime +$days` do ...
- Windows下遍历某目录下的文件
需求:要求遍历某个目录下的所有文件,文件夹 之前遇到过一些参考程序,其中有一种方法只能遍历 FAT32 格式的目录, 无法遍历NTFS的目录.
- delphi遍历指定目录下指定类型文件的函数
遍历指定目录下指定类型文件的函数// ================================================================// 遍历某个文件夹下某种文件,/ ...
- [boost][filesystem] 扫描给定目录下所有项
Intro. Boost的filesystem可以用来扫描给定目录下的所有项. 实现 具体实现代码如下: 需要包含的头文件和使用的命名空间: #include <boost/filesystem ...
- node 读取多个文件、合并多个文件、读写多个文件
一.读取文件 1.找文件中匹配的内容 let fs = require('fs') let content = fs.readFileSync('/Users/**/desktop/Test.txt' ...
随机推荐
- Spring MVC 数据验证——validate编码方式
1.导入jar包 validation-api-1.0.0.GA.jar这是比較关键的一个jar包,主要用于解析注解@Valid. hibernate-validator-4.3.2.Final.ja ...
- VMWare中的Host-only、NAT、Bridge的比較
VMWare有Host-only(主机模式).NAT(网络地址转换模式)和Bridged(桥接模式)三种工作模式. 1.bridged(桥接模式) 在这样的模式下.VMWare虚拟出来的操作系统就像是 ...
- 使用Hibernate防止SQL注入的方法
之前写代码,往后台传入一个组织好的String类型的Hql或者Sql语句,去执行. 这样其实是很蠢的一种做法!!!! 举个栗子~~ 我们模仿一下用户登录的场景: 常见的做法是将前台获取到的用户名和密码 ...
- 解决Eclipse alt+/不出来提示的问题
1. 检查windows ——preferences ——java ——editor —— content assist - advanced,在右上方有一行“select the proposal ...
- YTU 2542: 弟弟的作业
2542: 弟弟的作业 时间限制: 1 Sec 内存限制: 128 MB 提交: 130 解决: 57 题目描述 你的弟弟刚做完了"100以内数的加减法"这部分的作业,请你帮他 ...
- Bing必应地图中国API - 添加实时交通信息
Bing必应地图中国API - 添加实时交通信息 2011-05-24 14:44:58| 分类: Bing&Google|字号 订阅 2009年4月23日,微软必应地图中国API新 ...
- MySQL 基础 —— 数据类型、各种变量
1. 基本数据类型 char:prod_id char(10),括号内的内容表示字符的长度 decimal:十进制,不带参数为整数(四舍五入) text:文本类型,长度不限 2. 日期和时间处理函数 ...
- 【HAOI 2007】 理想的正方形
[题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 1010 co ...
- bzoj1509
树的直径 我先开始以为是个图,想想并不知道什么求图的直径的方法,结果是棵树 那么直觉告诉我们是在直径上面,实际上就是直径+min(i->u,i->v),扫一遍就行了 #include< ...
- WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题
今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...