digui.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /**
  2. * Created by fy on 15-9-30.
  3. */
  4. 'use strict';
  5. var co = require('co');
  6. var thunkify = require('thunkify');
  7. var fs = require('fs');
  8. /*
  9. 递归处理文件,文件夹
  10. path 路径
  11. floor 层数
  12. handleFile 文件,文件夹处理函数
  13. */
  14. function syncWalk(path, floor, rett) {
  15. var ret = rett || [];
  16. floor++;
  17. var files = fs.readdirSync(path);
  18. files.forEach(function (item) {
  19. var tmpPath = path + '/' + item;
  20. var stats = fs.statSync(tmpPath);
  21. if (stats.isDirectory()) {
  22. syncWalk(tmpPath, floor, ret);
  23. } else {
  24. ret.push({
  25. rpcPath:'/'+tmpPath.substring(tmpPath.lastIndexOf('service/')),
  26. fileName:item,
  27. floor: floor,
  28. path: tmpPath
  29. });
  30. }
  31. });
  32. return ret;
  33. }
  34. /*
  35. 递归处理文件,文件夹
  36. path 路径
  37. floor 层数
  38. handleFile 文件,文件夹处理函数
  39. */
  40. function walk(path, floor, handleFile) {
  41. handleFile(path, floor);
  42. floor++;
  43. fs.readdir(path, function (err, files) {
  44. if (err) {
  45. console.log('read dir error');
  46. } else {
  47. files.forEach(function (item) {
  48. var tmpPath = path + '/' + item;
  49. fs.stat(tmpPath, function (err1, stats) {
  50. if (err1) {
  51. console.log('stat error');
  52. } else {
  53. if (stats.isDirectory()) {
  54. walk(tmpPath, floor, handleFile);
  55. } else {
  56. if (floor == 3) {
  57. handleFile(tmpPath, floor);
  58. }
  59. }
  60. }
  61. });
  62. });
  63. }
  64. });
  65. }
  66. /*syncWalk;*/
  67. module.exports.walk = function (path, floor) {
  68. var ret = {};
  69. var list = syncWalk(path, floor, null);
  70. list.forEach(function (o) {
  71. var path = o.path;
  72. //console.log(path);
  73. var names = path.split('/');
  74. let bookName = names[6];
  75. var categoryName = names[5];
  76. let attr = path.substring(path.lastIndexOf('.')) == '.pdf' ? 'pdf' : 'img';
  77. //if (o.path.indexOf('.pdf') != -1) {
  78. if (typeof ret[bookName] != 'object')ret[bookName] = {};
  79. ret[bookName]['categoryName'] = categoryName;
  80. ret[bookName]['bookName'] = bookName;
  81. ret[bookName][attr] = path;
  82. //}
  83. });
  84. var xx = [];
  85. for (var item in ret) xx.push(ret[item]);
  86. return xx;
  87. };
  88. module.exports.syncWalk = syncWalk;