Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

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

~/Library/Application Support/iPhone Simulator

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

Для хранения файлов, которые вы хотите сохранять во время сеансов приложения, лучше всего подойдет папка «Документы» вашего приложения.Это не единственный вариант создания файлов, но это верно выбор для этой работы.Помимо правильного хранения ваших файлов, если хранить их в папке «Документы», 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.

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top