Как стать автором
Обновить

А в чем проблема работать с файлами?

Уровень сложности Средний
Время на прочтение 52 мин
Количество просмотров 6.6K
Всего голосов 62: ↑62 и ↓0 +62
Комментарии 9

Комментарии 9

Наверное, не совсем по теме, но ложится в проблему «А в чем проблема работать с файлами?»

Нужно открывать файл pdf на третьей странице (windows):  

С:\1.pdf#page3

Или через запись в ячейке в excel:

\\С:\1.pdf#page3

Без использования браузера открыть pdf на нужной странице через #page (или подобное) вообще можно?

Открыть файл с точки зрения пользователя или с точки зрения программиста?

#page3 - это вообще указание фрагмента в семантике URI, браузеры ее поддерживают (для PDF-документов - не всегда), а остальные приложения - не факт

Excel тоже поддерживает открытие файлов по URL, как минимум HTTP(S), но помнится, Excel 2010 падал, если указать в URL фрагмент после #

Открыть файл с точки зрения пользователя или с точки зрения программиста?

С любой, но для начала "с точки зрения программиста".

#page3 - это вообще указание фрагмента в семантике URI, браузеры ее поддерживают (для PDF-документов - не всегда), а остальные приложения - не факт

Так и вопрос в этом "не факт". Может быть есть какие - либо хитрости. Хитрый BAT или Excel или VBA Excel или еще что-то, чтобы без браузера открыть pdf на нужной странице. Любопытно, но ранее считал, что нельзя. Вдруг ошибался?

Я посмотрел: _commit дергает FlushFileBuffers с дополнительными проверками и т.д. Учитывая, что FlushFileBuffers работает с хэндлом ОС, а _commit с файловыми дескрипторами, первая быстрее: не нужно переводить fd в handle. Тут надо написать замечание, что WinAPI функции надо описывать с параметрами hFile, а не fd, но это я занудствую.

Касательно NtFlushBuffersFileEx и того, что она работает только с NT-файловыми системами у меня есть вопрос - где про это написано? Я глянул в MSDN, там ни слова нет о различных ФС :-/


Про открытие в винде каталога - это сделать точно можно, даже документация на CreateFile про это говорит. Плюс есть всякие неочевидные Nt... и Zw... функции, которые могут с каталогами работать

В общем, данные надо хранить не просто в виде файла, а внутри базы SQLite - там большинство проблем уже решено.

там большинство проблем уже решено

Пока приложение однопоточное - может быть. Как только приложение многопоточное - появляются весьма интересные способы выстрелить себе в ногу.

Ну многопоточные приложения вообще заметно интереснее однопоточных)

Эпичный труд. Но самому важному ответу на вопрос «отказоустойчивость» == «избыточность» уделено меньше чем стоило бы

Любопытно, что началось всё с отказоустойчивости приложений. Не смотрели на Phantom OS
https://habr.com/ru/companies/selectel/articles/598679/ ? Там эту проблему решают на уровне ОС, но исходники то открыты.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории