|
16 | 16 | // Булево - Истина, если файл/каталог существует
|
17 | 17 | //
|
18 | 18 | Функция Существует(Знач Путь) Экспорт
|
19 |
| - |
| 19 | + |
20 | 20 | Объект = Новый Файл(Путь);
|
21 |
| - |
| 21 | + |
22 | 22 | Возврат Объект.Существует();
|
23 |
| - |
| 23 | + |
24 | 24 | КонецФункции // Существует()
|
25 | 25 |
|
26 | 26 | // Проверяет существование файла
|
|
32 | 32 | // Булево - Истина, если файл существует
|
33 | 33 | //
|
34 | 34 | Функция ФайлСуществует(Знач Путь) Экспорт
|
35 |
| - |
| 35 | + |
36 | 36 | Объект = Новый Файл(Путь);
|
37 |
| - |
| 37 | + |
38 | 38 | Возврат Объект.Существует() и Объект.ЭтоФайл();
|
39 |
| - |
| 39 | + |
40 | 40 | КонецФункции // ФайлСуществует()
|
41 | 41 |
|
42 | 42 | // Проверяет существование каталога
|
|
48 | 48 | // Булево - Истина, если каталог существует
|
49 | 49 | //
|
50 | 50 | Функция КаталогСуществует(Знач Путь) Экспорт
|
51 |
| - |
| 51 | + |
52 | 52 | Объект = Новый Файл(Путь);
|
53 |
| - |
| 53 | + |
54 | 54 | Возврат Объект.Существует() и Объект.ЭтоКаталог();
|
55 |
| - |
| 55 | + |
56 | 56 | КонецФункции // КаталогСуществует()
|
57 | 57 |
|
58 | 58 | // Гарантирует наличие пустого каталога с указанным именем
|
|
61 | 61 | // Путь - Строка - Путь к каталогу
|
62 | 62 | //
|
63 | 63 | Процедура ОбеспечитьПустойКаталог(Знач Путь) Экспорт
|
64 |
| - |
| 64 | + |
65 | 65 | ОбеспечитьКаталог(Путь);
|
66 | 66 | УдалитьФайлы(Путь, ПолучитьМаскуВсеФайлы());
|
67 |
| - |
| 67 | + |
68 | 68 | КонецПроцедуры // ОбеспечитьПустойКаталог()
|
69 | 69 |
|
70 | 70 | // Гарантирует наличие каталога с указанным именем
|
|
73 | 73 | // Путь - Строка - Путь к каталогу
|
74 | 74 | //
|
75 | 75 | Процедура ОбеспечитьКаталог(Знач Путь) Экспорт
|
76 |
| - |
| 76 | + |
77 | 77 | Объект = Новый Файл(Путь);
|
78 | 78 | Если Не Объект.Существует() Тогда
|
79 | 79 | СоздатьКаталог(Путь);
|
80 | 80 | ИначеЕсли НЕ Объект.ЭтоКаталог() Тогда
|
81 | 81 | ВызватьИсключение "Не удается создать каталог " + Путь + ". По данному пути уже существует файл.";
|
82 | 82 | КонецЕсли;
|
83 |
| - |
| 83 | + |
84 | 84 | КонецПроцедуры // ОбеспечитьКаталог()
|
85 | 85 |
|
86 | 86 | // Копирует все файлы из одного каталога в другой
|
|
115 | 115 | // Булево - Истина, если каталог пуст
|
116 | 116 | //
|
117 | 117 | Функция КаталогПустой(Знач Путь) Экспорт
|
118 |
| - |
| 118 | + |
119 | 119 | Если НЕ КаталогСуществует(Путь) Тогда
|
120 | 120 | ВызватьИсключение "Каталог <" + Путь + "> не существует";
|
121 | 121 | КонецЕсли;
|
122 |
| - |
| 122 | + |
123 | 123 | МассивФайлов = НайтиФайлы(Путь, ПолучитьМаскуВсеФайлы(), Ложь);
|
124 | 124 |
|
125 | 125 | Возврат МассивФайлов.Количество() = 0;
|
126 | 126 |
|
127 | 127 | КонецФункции // КаталогПустой(Знач Путь)
|
128 | 128 |
|
129 | 129 | // Возвращает путь файла относительно корневого каталога
|
| 130 | +// регистро-независимая замена, что важно для Windows в некоторых сценариях |
130 | 131 | //
|
131 | 132 | // Параметры:
|
132 | 133 | // ПутьКорневогоКаталога - <Строка> - путь корневого каталога
|
|
139 | 140 | //
|
140 | 141 | Функция ОтносительныйПуть(Знач ПутьКорневогоКаталога, Знач ПутьВнутреннегоФайла, Знач РазделительПути = Неопределено) Экспорт
|
141 | 142 |
|
142 |
| - Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда |
| 143 | + Если ПустаяСтрока(ПутьКорневогоКаталога) Тогда |
143 | 144 | ВызватьИсключение "Не указан корневой путь в методе ФС.ОтносительныйПуть";
|
144 | 145 | КонецЕсли;
|
145 |
| - |
| 146 | + |
146 | 147 | ФайлКорень = Новый Файл(ПутьКорневогоКаталога);
|
147 | 148 | ФайлВнутреннийКаталог = Новый Файл(ПутьВнутреннегоФайла);
|
148 |
| - Рез = СтрЗаменить(ФайлВнутреннийКаталог.ПолноеИмя, ФайлКорень.ПолноеИмя, ""); |
| 149 | + |
| 150 | + ИмяДляРегулярки = ПодготовитьШаблонКИспользованиюВРегулярке(ФайлКорень.ПолноеИмя); |
| 151 | + РегулярноеВыражение = Новый РегулярноеВыражение(СтрШаблон("(%1)(.*)", ИмяДляРегулярки)); |
| 152 | + Рез = РегулярноеВыражение.Заменить(ФайлВнутреннийКаталог.ПолноеИмя, "$2"); |
| 153 | + |
149 | 154 | Если Найти("\/", Лев(Рез, 1)) > 0 Тогда
|
150 | 155 | Рез = Сред(Рез, 2);
|
151 | 156 | КонецЕсли;
|
|
177 | 182 | Возврат Файл.ПолноеИмя;
|
178 | 183 | КонецФункции // ПолныйПуть(Знач ОтносительныйИлиПолныйПуть) Экспорт
|
179 | 184 |
|
| 185 | + |
| 186 | +// Подготовить шаблон к использованию в регулярке путем экранирования служебных символов |
| 187 | +// |
| 188 | +// Параметры: |
| 189 | +// Шаблон - Строка - строка регулярного выражения без экранирования |
| 190 | +// |
| 191 | +// Возвращаемое значение: |
| 192 | +// Строка - подготовленный шаблон регулярного выражения с добавлением экранирования и заменой * |
| 193 | +// |
| 194 | +Функция ПодготовитьШаблонКИспользованиюВРегулярке(Знач Шаблон) |
| 195 | + |
| 196 | + СпецСимволы = Новый Массив; |
| 197 | + СпецСимволы.Добавить("\"); |
| 198 | + СпецСимволы.Добавить("^"); |
| 199 | + СпецСимволы.Добавить("$"); |
| 200 | + СпецСимволы.Добавить("("); |
| 201 | + СпецСимволы.Добавить(")"); |
| 202 | + СпецСимволы.Добавить("<"); |
| 203 | + СпецСимволы.Добавить("["); |
| 204 | + СпецСимволы.Добавить("]"); |
| 205 | + СпецСимволы.Добавить("{"); |
| 206 | + СпецСимволы.Добавить("}"); |
| 207 | + СпецСимволы.Добавить("|"); |
| 208 | + СпецСимволы.Добавить(">"); |
| 209 | + СпецСимволы.Добавить("."); |
| 210 | + СпецСимволы.Добавить("+"); |
| 211 | + СпецСимволы.Добавить("?"); |
| 212 | + СпецСимволы.Добавить("*"); |
| 213 | + |
| 214 | + Для Каждого СпецСимвол Из СпецСимволы Цикл |
| 215 | + Шаблон = СтрЗаменить(Шаблон, СпецСимвол, "\" + СпецСимвол); |
| 216 | + КонецЦикла; |
| 217 | + |
| 218 | + Возврат Шаблон; |
| 219 | + |
| 220 | +КонецФункции |
0 commit comments