Записать в файл в Monotouch - PullRequest
       14

Записать в файл в Monotouch

35 голосов
/ 02 декабря 2009

Как мне создать и записать файл в приложении Monotouch для iPhone?

Файл должен сохраняться между запусками приложения, поэтому, я думаю, его нужно разместить где-то в комплекте приложений (документы или ресурсы?).

Ответы [ 3 ]

105 голосов
/ 04 декабря 2009

[ Примечание: Мой ответ довольно подробный, потому что я не знаю вашего уровня понимания относительно комплектов приложений или структуры маленького мира вашего приложения для iPhone в изолированной среде - извините, если я расскажу о вещах, которые вы уже знаете - Я предпочитаю писать немного больше, чем слишком мало, и добавить немного почему при обсуждении как ...]

У вас есть несколько вариантов (конечно). Я предполагаю, что вы уже знакомы с .Net в некоторой степени, и что ваш вопрос больше о том, как это сделать с помощью iPhone Way.

Каждое приложение для iPhone (и вы увидите то же самое для приложений в OS X) - это «комплект», который не является исполняемым в традиционном смысле, но фактически представляет собой иерархию папок, внутри которой живет бинарный файл вашего приложения ( вместе с ресурсами, настройками и т. д.).

Из-за того, что приложения iPhone с убер-песочницей не имеют доступа, у вас нет доступа к общим папкам, которые вы обычно можете использовать при разработке рабочего стола (например, имея общую папку «Документы», которая находится под пользователем). домашняя папка, к которой имеют доступ приложения).

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

Самый простой способ узнать, как выглядит папка вашего приложения на телефоне, - это посмотреть папку, которую симулятор iPhone использует для установки приложений, настроек, бла-бла-бла. На моей машине (я не помню, если это настраивается, но, вероятно, то же самое в вашей системе), вы можете попасть в папку по этому пути:

~/Library/Application Support/iPhone Simulator

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

Для хранения файлов, которые вы хотели бы сохранить во время сеансов приложения, папка «Документы» вашего приложения - это место. Это не единственный выбор для создания файлов, но это правильный выбор для этой работы. В дополнение к тому, что ваши файлы хранятся должным образом, их хранение в папке «Документы» также позволяет создавать резервные копии iTunes при синхронизации пользователя.

С MonoTouch вы можете получить путь к папке «Документы» вашего приложения с помощью Environment.GetFolderPath(Environment.SpecialFolder.Personal);

Если вы хотите проверить это, это очень простой код, который запишет файл с именем "out.txt" в папку документов вашего приложения. Этот код также считывает содержимое файла, чтобы показать, что он был создан - для дальнейшей проверки перейдите в папку «Приложения» симулятора, отсортируйте папки приложений по дате их изменения, просмотрите самые последние измененные файлы и загляните в его Документы. папка - вы найдете «out.txt» (вы не можете найти папку вашего приложения по имени, потому что, когда ваше приложение установлено, оно помещается в папку с именем, например «2B3CA854-FADB-4DDC-9732-0E61B3DD8D8C» "- сортировка папок по дате, когда они были изменены, укажет вам на последнее измененное приложение, которое в данном случае является приложением, содержащим следующий код):

// For this to function, don't forget "using System.IO;"

// If you're just playing around with this to see it work, place it inside
// your AppDelegate's "FinishedLaunching" method in main.cs

string path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, "out.txt");

// File.WriteAllText will create a file and then write text to it. If the
// file already exists, File.WriteAllText will overwrite it.
File.WriteAllText(filePath, "Howdy, world.");

// Now we prove it worked by reading the contents of the file and then
// printing them to the console...   
string text = File.ReadAllText(filePath);
Console.WriteLine(text);

Итак, единственное, что действительно относится к iPhone, - это знание, что «Environment.SpecialFolder.Personal» отображается в папку «Документы» вашего приложения. Кроме того, это .Net как обычно.

И, опять же, это, вероятно, было излишним, но я хотел ответить достаточно подробно для всех, кто его видит - надеюсь, это поможет:)

12 голосов
/ 02 декабря 2009

В следующем разделе «Как сделать» с сайта руководства Xamarin.iOS есть несколько указателей, где хранить ваши файлы:

http://docs.xamarin.com/guides/ios/application_fundamentals/working_with_the_file_system/

8 голосов
/ 02 декабря 2009

Вы можете сделать что-то подобное во время выполнения:

using (StreamWriter writer = new StreamWriter (Path.Combine (Environment.SpecialFolders.Documents, "yourfilename.ext"))) { }

и это создаст файл. Чтобы открыть его для чтения, используйте тот же Path.Combine(), но с StreamReader .

...