io.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * io
  3. * @author oldj
  4. * @blog http://oldj.net
  5. */
  6. 'use strict'
  7. const fs = require('fs')
  8. const crypto = require('crypto')
  9. const md5File = require('md5-file')
  10. exports.getUserHome = () => {
  11. return process.env[(process.platform === 'win32') ? 'USERPROFILE' : 'HOME']
  12. }
  13. let isFile = exports.isFile = (p) => {
  14. try {
  15. if (fs.statSync(p).isFile()) {
  16. return true
  17. }
  18. } catch (e) {
  19. }
  20. return false
  21. }
  22. exports.isDirectory = (p) => {
  23. try {
  24. if (fs.statSync(p).isDirectory()) {
  25. return true
  26. }
  27. } catch (e) {
  28. }
  29. return false
  30. }
  31. let writeFile = exports.writeFile = (fn, data, callback) => {
  32. let cnt_md5 = crypto.createHash('md5').update(data).digest('hex')
  33. if (isFile(fn) && md5File.sync(fn) === cnt_md5) {
  34. callback()
  35. } else {
  36. console.log('md5 not match..')
  37. fs.writeFile(fn, data, 'utf-8', callback)
  38. }
  39. }
  40. exports.pWriteFile = (fn, data) => {
  41. return new Promise((resolve, reject) => {
  42. writeFile(fn, data, (e, v) => e ? reject(e) : resolve(v))
  43. })
  44. }
  45. let readFile = exports.readFile = (fn, callback) => {
  46. if (!isFile(fn)) {
  47. callback(null, '')
  48. } else {
  49. fs.readFile(fn, 'utf-8', callback)
  50. }
  51. }
  52. exports.pReadFile = (fn) => {
  53. return new Promise((resolve, reject) => {
  54. readFile(fn, (e, v) => e ? reject(e) : resolve(v))
  55. })
  56. }