fs.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var File = require("fs"),
  2. LazyArray = require("../../lazy-array").LazyArray,
  3. defer = require("../../promise").defer;
  4. for(var i in File){
  5. exports[i] = File[i];
  6. }
  7. exports.readFileSync = File.read;
  8. exports.writeFileSync = File.write;
  9. exports.mkdirSync = File.mkdir;
  10. exports.readdir = exports.list;
  11. exports.stat = exports.statSync = function(path) {
  12. try{
  13. return {
  14. isFile: function(){
  15. return File.isFile(path);
  16. },
  17. size: File.size(path)
  18. };
  19. }catch(e){
  20. var deferred = defer();
  21. deferred.reject(e);
  22. return deferred.promise;
  23. }
  24. };
  25. exports.makeTree = File.mkdirs;
  26. exports.makeDirectory = File.mkdir;
  27. exports.open = function(){
  28. var file = File.open.apply(this, arguments);
  29. var array = LazyArray({
  30. some: function(callback){
  31. while(true){
  32. var buffer = file.read(4096);
  33. if(buffer.length <= 0){
  34. return;
  35. }
  36. if(callback(buffer)){
  37. return;
  38. }
  39. }
  40. }
  41. });
  42. for(var i in array){
  43. file[i] = array[i];
  44. }
  45. return file;
  46. };
  47. exports.openSync = exports.open;
  48. exports.createWriteStream = function(path, options) {
  49. options = options || {};
  50. options.flags = options.flags || "w";
  51. var flags = options.flags || "w",
  52. f = File.open(path, flags);
  53. return {
  54. writable: true,
  55. write: function() {
  56. var deferred = defer();
  57. try {
  58. f.write.apply(this, arguments);
  59. f.flush();
  60. }
  61. catch (e) {
  62. return stream.writable = false;
  63. }
  64. deferred.resolve();
  65. return deferred.promise;
  66. },
  67. end: f.close,
  68. destroy: f.close
  69. }
  70. }