В Windows, когда необходимо использовать “\\\\\? \\” префикс имени файла?

Почему бы тебе просто не применить силу и не сделать жизнь проще :-)? Все это должно работать:

select 
   date(timestamp('2019-01-02')), 
   date(timestamp('2019-01-02 00:00:00')), 
   date(timestamp(null)))

Итак, в вашем выражении if null:

SELECT
  IFNULL(OnSite.worksite_id, Documents.worksite_id) as `Worksite`,
  IFNULL(date(datetime(OnSite.timestamp)),date(datetime(Documents.timestamp))) as `Date`,
  COUNT(Documents.worksite_id) as `Users_on_Site`,
  COUNT(DISTINCT OnSite.uid) as `Completed`
FROM OnSite
  LEFT JOIN Documents ON OnSite.worksite_id = Documents.worksite_id AND DATE(datetime(OnSite.timestamp)) = DATE(datetime(Documents.timestamp))
GROUP BY `Date`, `Worksite`;
13
задан sorin 14 January 2010 в 13:45
поделиться

4 ответа

Да, это просто с этой целью. Однако Вы будете, вероятно, видеть проблемы совместимости, если Вы решите к созданию путей по длине MAX_PATH. Например, оболочка проводника и командная строка (по крайней мере, на XP, я не знаю о Vista), не может обработать пути по той длине и возвратит ошибки.

9
ответ дан 1 December 2019 в 22:40
поделиться

Я писал код Windows с 1995, и хотя я знаю о том префиксе, я никогда не находил причины использовать его. Увеличение длины пути вне MAX_PATH кажется, единственная причина его, и ни я, ни любой из клиентов моих программ никогда не делали так к моему знанию.

1
ответ дан 1 December 2019 в 22:40
поделиться

Лучшее использование для этого метода не должно, вероятно, создавать новые файлы, но управлять существующими файлами, которые кто-то еще, возможно, создал.

Я управлял файловым сервером, который обычно будет получать файлы с path_length > MAX_PATH. Вы видите, пользователи видели файлы как H:\myfile.txt, но на сервере это было на самом деле H:\users\username\myfile.txt. Таким образом, если пользователь создал файл с точно MAX_PATH символы, на сервере это было MAX_PATH+len("users\username").

(Создание файла с символами MAX_PATH не таким образом редко, с тех пор при сохранении веб-страницы на Internet Explorer, это использует название страницы в качестве имени файла, которое может быть, вполне жаждут некоторых страниц).

Кроме того, при совместном использовании диска (через сеть или usb) с Mac или машиной Linux, можно оказаться с файлами с именами как довод "против", prn или lpt1. И снова, префикс позволяет Вам, и Ваши сценарии обрабатывают те файлы.

5
ответ дан 1 December 2019 в 22:40
поделиться

Я думаю, что первая вещь отметить является этим "\\? \" не делает путь путем UNC. Вы были более точными во второй раз при вызове этого путем в стиле UNC. Но даже затем, подобие только прибывает из наличия двух обратных косых черт в запуске. Это действительно не имеет никакого отношения к UNC. Это сохранено тем, что необходимо использовать еще больше символов для получения пути UNC с "\\? \" префикс.

Я думаю, что у Вас есть вся причина использования того префикса. Это снимает предел максимальной длины, как описано в статье, которую Вы процитировали. И это только относится к путям Unicode; пути не-Unicode не добираются для предотвращения предела при помощи того префикса.

Одна вещь отметить состоит в том, что префикс не позволяется для относительных путей, только для абсолютных. Вы могли бы хотеть перепроверить те свои почести библиотеки C то ограничение.

3
ответ дан 1 December 2019 в 22:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: