Pregunta

¿Cómo puedo crear y escribir en un archivo en una aplicación para el iPhone MonoTouch?

El archivo debe persistir entre inicia la aplicación, así que supongo que tiene que ser colocado en alguna parte del paquete de aplicaciones (documentos o recursos?).

¿Fue útil?

Solución

[ Nota: Mi respuesta es bastante a fondo, porque no sé su nivel de comprensión de los paquetes de aplicaciones o la estructura del pequeño mundo de espacio aislado de su iPhone App - disculpas si cubro cosas que ya conoce - yo prefiero escribir un poco demasiado que demasiado poco, y para añadir un poco de la ¿Por qué cuando se habla de la ¿Cómo ...]

Usted tiene algunas opciones (por supuesto). Asumo que ya está familiarizado con .Net hasta cierto punto y que su pregunta es más acerca de cómo hacer esto de la manera iPhone.

Cada aplicación para el iPhone (y verá lo mismo para las aplicaciones en OS X) es un "paquete" que no es un archivo ejecutable en el sentido tradicional, pero en realidad una jerarquía de carpetas dentro de la cual su vida de aplicaciones binarias ( junto con los recursos, configuraciones, etc.).

Debido a la forma súper-sandboxed aplicaciones para el iPhone son, usted no tiene acceso a las carpetas compartidas que normalmente sería capaz de usar cuando se hace el desarrollo de escritorio (que tiene, por ejemplo, una carpeta Documentos común que vive bajo un usuario de carpeta de inicio para las aplicaciones que tienen acceso).

En lugar de ello, su aplicación tiene su propia jerarquía de carpetas que es como su propio conjunto personal de las carpetas que normalmente se comparten entre las aplicaciones.

La forma más fácil de ver lo que la estructura de la carpeta de su aplicación se ve como en el teléfono es buscar en la carpeta del simulador de iPhone utiliza para la instalación de aplicaciones, configuración, bla, bla, bla. En mi máquina (no recuerdo si esto es configurable, pero es probablemente el mismo en su sistema), se puede llegar a la carpeta por este camino:

~/Library/Application Support/iPhone Simulator

Dentro de eso, hay una carpeta de usuario / aplicaciones que contiene las aplicaciones que has instalado en el simulador. Profundizar en cualquiera de esas carpetas, y se puede ver la estructura de carpetas que su aplicación va a tener acceso a en el teléfono.

Para almacenar los archivos que le gustaría persistido a través de sesiones de la aplicación, carpeta Documentos de su aplicación es el punto. No es su única opción para la creación de archivos, pero es la opción derecho para este trabajo. Además de los archivos que se almacenan adecuadamente, manteniéndolos en la carpeta de documentos también los conseguirá el respaldo de iTunes cuando las sincronizaciones de usuario.

Con MonoTouch, se puede obtener la ruta de la carpeta Documentos de su aplicación con Environment.GetFolderPath(Environment.SpecialFolder.Personal);

Si desea probarlo, esto es un código muy simple que va a escribir un archivo llamado "out.txt" a la carpeta Documentos de su aplicación. Este código también lee el contenido del archivo para mostrar que fue creado - para su posterior verificación, vaya a la carpeta Aplicaciones del simulador, ordenar las carpetas de aplicaciones de la fecha en que fueron modificados, profundizar en los más recientemente modificada, y mirar dentro de sus documentos carpeta - encontrará "out.txt" (no se puede encontrar la carpeta de su aplicación por su nombre, ya que, cuando se instala la aplicación, que se rellena dentro de una carpeta con un nombre como "2B3CA854-fadB-4DDC-9732-0E61B3DD8D8C "- clasificar las carpetas por la fecha en que se modificaron te orientará a la aplicación más recientemente modificada, que, en este caso, es lo aplicación contiene el siguiente código):

// 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);

Por lo tanto, la única cosa que aquí es realmente iPhone-específica es saber que los mapas "Environment.SpecialFolder.Personal" a la carpeta Documentos de su aplicación. Más allá de eso, es .Net como de costumbre.

Y, de nuevo, esto era algo excesivo, pero quería responder suficientemente a fondo para todos que la ve - espero que esta ayuda:)

Otros consejos

La siguiente Cómo desde el sitio Xamarin.iOS guía tiene algunas sugerencias para dónde almacenar sus archivos:

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

Puede hacer algo como esto en tiempo de ejecución:

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

y que va a crear el archivo. A abrirlo para leer, usar la misma Path.Combine() pero con StreamReader .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top