2012-04-08 2 views
1

Мне нужно создать каталог, полный файлов данных. Эти файлы являются временными, пользовательскими файлами.Где пользовательское временное хранилище на разных платформах?

Пока файлы являются временными, и это нормально, если они удалены системой, их много, и я бы хотел, чтобы их можно было использовать повторно, если можно. Кроме того, я ожидаю, что другие приложения (работающие как один и тот же пользователь) будут получать и создавать эти файлы. Это означает, что мне нужен стандартный протокол, который будет работать на разных языках программирования.

Поскольку я знаю, что кто-то предложит это, я не хочу использовать '/ tmp' или '% TEMP% или свойство системы java java.io.tmpdir. Эти каталоги с системным охватом. Я также очень заинтересован в том, чтобы найти стандартные платформы или одобренные платформой методы, чтобы найти решение, которое работает.

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

+0

Переменная окружения% temp% в современных Windows (я думаю, XP SP3 и выше) находится в каталоге «документы и настройки» или «Пользователь». TEMP и TMP =% USERPROFILE% \ AppData \ Local \ Temp на двух машинах, на которых я только что посмотрел. – JimR

ответ

0

Это лучший список, который я нашел. Если у вас есть какие-либо корректировки/предложения, пожалуйста, дайте мне знать.

В Windows:

  1. Создание каталога "CompanyName" в директории "локальные данные приложения". Найти это с помощью:

    1. Система переменной окружения LOCALAPPDATA или
    2. запрос реестра, выполнив следующую команду:

      reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Local AppData 
      

На MacOSX:

  1. $TMPDIR или функция Cocoa NSTemporaryDirectory()
    • Очищенные автоматически каждые три дня
  2. mkdir -m 700 ~/Library/Caches/CompanyOrProductName
    • Не удаляются системой автоматически (отлично подходит для моего случая использования)
    • Не подкрепленные TimeMachine
  3. mkdir -m 700 ~/Library/Application Support/CompanyOrProductName
    • Не удаляются системой автоматически (отлично подходит для моего случая использования)
    • Подкреплены TimeMachine

В Linux:

  1. mkdir -m 700 ~/.company-name

В Solaris/OpenSolaris:

  1. ?

Ссылки:

  • Cocoa with Love объясняет три варианта MacOSX выше, а также обсуждаются некоторые вопросы безопасности.
2

на Mac OS X, у вас есть несколько вариантов:

$TMPDIR фактически пользователь области видимости. Это каталог внутри/var/folders, но. внутри него есть иерархия каталогов, ориентированная на пользователя. Конкретный каталог, на который указывает $TMPDIR, не позволяет читать никому, кроме пользователя. Это то, что возвращает функция какао NSTemporaryDirectory().

Вы также можете использовать ~/Library/Caches/CompanyOrProductName. Система не будет чистить это самостоятельно, но она не будет включена в резервные копии Time Machine, и пользователь может свободно ее уничтожать по своему усмотрению.

Вы не должны использовать ~/Library/CompanyName. Возможно, вы думали о ~/Library/Application Support/CompanyName? Это может быть уместно, но обычно это не временный материал.

2
  • Если вы работаете в Solaris, и вы не возражаете эти файлы будут потеряны, когда перезагружается OS, вы можете хранить файлы в /tmp/.<username>-<company>/ и изменить права доступа для каталога, чтобы защитить его.
  • Если вы хотите, чтобы эти временные файлы, чтобы выжить перезагрузки, используйте /var/tmp/.<username>-<company>/ или ~/.<company>
  • Если домашние каталоги пользователя удаленно установлены и распределены между различными машинами, и вы хотите, чтобы ваши временные файлы, которые будут также одними и теми же словами, вы можете использование ~/.<company>/.

Конечно, .username-company и .company - всего лишь предложения. Вы можете использовать любое имя, которое не будет конфликтовать с другими приложениями и пользователями.

~/.<company> на сегодняшний день является наиболее распространенным выбором, как, например, ~/.mozilla, ~/.openoffice.org, ~/.adobe, ~/.mysql, ~/.netbeans, ~/.thunderbird, ~/.VirtualBox и любит.

В любом случае, на Solaris и, возможно, в большинстве других Unix и Unix-подобных систем нет других каталогов, доступных для записи, определенных стандартом, чем домашний каталог, /tmp и /var/tmp.

Смежные вопросы