Файловый менеджер ⚬ 文件管理器 ⚬ File manager
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
5.0KB

  1. СоздатьНовыйФайл = мир =>
  2. {
  3. (async() => {
  4. try
  5. {
  6. await мир.фс.promises.writeFile(мир.новыйФайл, "");
  7. мир.уведомить("создали новый файл");
  8. }
  9. catch (ошибка)
  10. {
  11. мир.ошибкаОперацииФС = ошибка.code;
  12. мир.уведомить("ошибка операции файловой системы");
  13. }
  14. })();
  15. };
  16. // // // //
  17. ПерейтиВВыбраннуюЧастьДиректории = мир =>
  18. {
  19. const номер = мир.номерВыбраннойЧастиДиректории;
  20. const части = мир.частиДиректории.slice(0, номер + 1);
  21. мир.директория = части.join("/") + "/";
  22. мир.уведомить("изменили директорию");
  23. };
  24. // // // //
  25. СоздатьНовуюДиректорию = мир =>
  26. {
  27. (async() => {
  28. try
  29. {
  30. console.debug("mkdir", мир.новаяДиректория);
  31. await мир.фс.promises.mkdir(мир.новаяДиректория);
  32. мир.уведомить("создали новую директорию");
  33. }
  34. catch (ошибка)
  35. {
  36. мир.ошибкаОперацииФС = ошибка.code;
  37. console.debug("ошибка фс новой дир", ошибка);
  38. мир.уведомить("ошибка операции файловой системы");
  39. }
  40. })();
  41. };
  42. // // // //
  43. РазбитьДиректориюНаЧасти = мир =>
  44. {
  45. var части = мир.директория.split(/\//);
  46. // Убираем последнюю пустую строку.
  47. части.pop();
  48. мир.частиДиректории = части;
  49. мир.уведомить("изменили части директории");
  50. };
  51. // // // //
  52. УглубитьсяВВыбраннуюДиректорию = мир =>
  53. {
  54. const номер = мир.номерВыбранногоФайла;
  55. const директория = мир.списокФайловТекущейДиректории[номер];
  56. мир.директория = мир.директория + директория + "/";
  57. мир.уведомить("изменили директорию");
  58. };
  59. // // // //
  60. ОпределитьТипВыбранногоФайла = мир =>
  61. {
  62. const номер = мир.номерВыбранногоФайла;
  63. const свойство = мир.свойстваФайловТекущейДиректории[номер];
  64. if (свойство.isDirectory())
  65. {
  66. мир.уведомить("тип выбранного файла директория");
  67. }
  68. else
  69. {
  70. мир.уведомить("тип выбранного файла файл");
  71. }
  72. };
  73. // // // //
  74. ПолучитьСвойстваФайловТекущейДиректории = мир =>
  75. {
  76. const список = мир.списокФайловТекущейДиректории;
  77. (async() => {
  78. try
  79. {
  80. var свойстваФайлов = [];
  81. for (var н in список)
  82. {
  83. const имя = список[н];
  84. const путь = мир.директория + имя;
  85. const свойства = await мир.фс.promises.stat(путь);
  86. свойстваФайлов.push(свойства);
  87. }
  88. мир.свойстваФайловТекущейДиректории = свойстваФайлов;
  89. мир.уведомить("получили свойства файлов текущей директории");
  90. }
  91. catch (ошибка)
  92. {
  93. мир.ошибкаОперацииФС = ошибка.code;
  94. мир.уведомить("ошибка операции файловой системы");
  95. }
  96. })();
  97. };
  98. // // // //
  99. ПолучитьСписокФайловТекущейДиректории = мир =>
  100. {
  101. (async() => {
  102. try
  103. {
  104. const список = await мир.фс.promises.readdir(мир.директория);
  105. мир.списокФайловТекущейДиректории = список;
  106. мир.уведомить("получили список файлов текущей директории");
  107. }
  108. catch (ошибка)
  109. {
  110. мир.ошибкаОперацииФС = ошибка.code;
  111. мир.уведомить("ошибка операции файловой системы");
  112. }
  113. })();
  114. };
  115. // // // //
  116. ЗадатьТекущуюДиректориюКорнем = мир =>
  117. {
  118. мир.директория = "/";
  119. мир.уведомить("изменили директорию");
  120. };
  121. // // // //
  122. СоздатьФайловуюСистему = мир =>
  123. {
  124. мир.фс = new LightningFS("AMYP");
  125. };