C # каталог для "игры с" - PullRequest
2 голосов
/ 09 июня 2010

Простой вопрос здесь.У меня есть программа на C #, которая должна хранить некоторые файлы на жестком диске, но мне не нужно, чтобы они были полезны конечному пользователю, только где-то, из чего программа может читать / писать.

Есть ли каталог, на который я могу программно ссылаться, чтобы быть моей «игровой площадкой для файлового пространства» - то есть, чтобы я мог свободно читать и записывать в и из?файлы гарантированно будут там?Я не хочу, чтобы они исчезали, пока моя программа еще работает!

Ответы [ 10 ]

8 голосов
/ 09 июня 2010

Я бы использовал каталог данных приложения.Вы можете добраться до него, используя что-то вроде:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

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

6 голосов
/ 09 июня 2010

Вы можете использовать системный временный каталог, который вы можете получить с помощью:

string tmpDir = System.IO.Path.GetTempPath();

Если вы хотите, вы можете создать подпапку там. Временная папка отлично подходит для файлов, которые вас не интересуют. Если вы хотите сохранить файлы, вы можете использовать папку ApplicationData, как предложили Тим С и Грэм Миллер.

1 голос
/ 09 июня 2010

Я думаю, вы хотите каталог данных приложения:

var appplicationDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
1 голос
/ 09 июня 2010

Использовать системный каталог Temp:

System.IO.Path.Combine( System.IO.Path.GetTempPath(), "your app name" )

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

альтернативный текст http://i49.tinypic.com/10hix5x.png

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

1 голос
/ 09 июня 2010

Похоже, вы ищете изолированное хранилище :

Изолированное хранилище - это механизм хранения данных, обеспечивающий изоляцию и безопасность путем определения стандартизированных способов связывания кода с сохраненнымданные.Стандартизация предоставляет и другие преимущества.Администраторы могут использовать инструменты, предназначенные для управления изолированным хранилищем, для настройки пространства хранения файлов, установки политик безопасности и удаления неиспользуемых данных.Благодаря изолированному хранилищу вашему коду больше не нужны уникальные пути для указания безопасных расположений в файловой системе, а данные защищены от других приложений, которые имеют доступ только к изолированному хранилищу.Жестко закодированная информация, указывающая, где находится область хранения приложения, не нужна.

0 голосов
/ 09 июня 2010

Библиотека базовых классов предлагает вам класс для управления набором временных файлов.Он хорошо скрыт в пространстве имен System.CodeDom, но, тем не менее, может быть полезен и в других контекстах:

TempFileCollection

В следующем примере показано, как можно использовать класс TempFileCollection.

using System;
using System.CodeDom.Compiler;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        TempFileCollection tfc = new TempFileCollection(Path.GetTempPath());

        // add a temporary text file
        string filename1 = tfc.AddExtension("txt");

        // add another file with a fully specified name 
        // this file will not automatically be deleted
        string filename2 = Path.Combine(tfc.TempDir, "mycustomfile.txt");
        tfc.AddFile(filename2, true);
        Console.WriteLine(tfc.Count);
        // Create and use the test files.
        File.WriteAllText(filename1, "Hello World.");
        File.WriteAllText(filename2, "Hello again.");
        tfc.Delete();
    }
}
0 голосов
/ 09 июня 2010
0 голосов
/ 09 июня 2010

Обычно специфичные для приложения данные хранятся в местах, указанных в перечислении SpecialFolder.Вы можете использовать ApplicationData для индивидуальных данных приложения или LocalApplicationData для варианта для компьютера:

var playground = Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData));
0 голосов
/ 09 июня 2010

Обычно это папка AppData.Он находится в дереве каталогов конкретного пользователя, но не в том месте, куда ходят обычные пользователи.

0 голосов
/ 09 июня 2010

C:\TEMP * * 1002

серьезно, нет, в песочнице нет встроенной детской площадки. Вы должны выбрать / создать каталог, который соответствует вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...