/
spruttechnology
/
cam-api-examples
Обзор
Документация
Войти
/
spruttechnology
/
cam-api-examples
Код
Запросы
3
Задачи
Пакеты
0
Релизы
1
Аналитика
v19/develop
Project/ExtensionUtilityExportInformationNet/project/main/Helpers/ExportOutputPaths.cs
49 строк
2 KB
renal
Добавление отображения информации в WEB - версии в расширении экспорта информации
20 июл 2026, 08:34
20 июл 2026, 08:34
c8b8e63
Код
Авторство
О чём код?
namespace ExtensionUtilityExportInformationNet { /// <summary> /// Корневая папка вывода экспорта, общая для json, скриншотов и траекторий: /// текущая папка процесса, если она записываемая (dev-запуск), /// иначе AppData\Local\ExportProjectInformation. /// </summary> public static class ExportOutputPaths { private const string OutputFolderName = "ExportProjectInformation"; private static string? _root; /// <summary> /// Корень вывода (вычисляется один раз за запуск). /// </summary> public static string Root => _root ??= ResolveRoot(); private static string ResolveRoot() { var currentDir = Directory.GetCurrentDirectory(); if (IsDirectoryWritable(currentDir)) return currentDir; var appDataDir = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), OutputFolderName); Directory.CreateDirectory(appDataDir); return appDataDir; } /// <summary> /// Проверяет право на запись пробным файлом (удаляется сразу при закрытии). /// </summary> private static bool IsDirectoryWritable(string directory) { try { var probePath = Path.Combine(directory, Path.GetRandomFileName()); using (File.Create(probePath, 1, FileOptions.DeleteOnClose)) { } return true; } catch (Exception) { return false; // нет прав на запись — уходим в AppData } } } }