35 votes

Écrire dans un fichier dans Monotouch

Comment créer et écrire dans un fichier dans une application iPhone Monotouch?

Le fichier doit persister entre les lancements d'applications, donc je suppose qu'il doit être placé quelque part dans le bundle App (documents ou ressources?).

106voto

Rory Blyth Points 10420

[Note: Ma réponse est assez complète car je ne connais pas votre niveau de connaissances en matière d'application des forfaits ou la structure de votre application iPhone du bac à sable peu de monde - toutes mes excuses si je couvre des choses que vous savez déjà - je préfère écrire un peu trop que trop peu, et pour ajouter un peu du pourquoi au moment de discuter de la façon dont...]

Vous avez un peu d'options (bien sûr). Je suis en supposant que vous êtes déjà familier avec .Net dans une certaine mesure et que votre question est plus sur la façon de faire de l'iPhone Manière.

Chaque application iPhone (et vous verrez la même chose pour les applications sous mac OS X) est un "paquet" qui n'est pas un fichier exécutable dans le sens traditionnel du terme, mais en fait, une hiérarchie de dossiers à l'intérieur de laquelle votre application binaires vie (avec les ressources, les réglages, etc.).

En raison de la façon dont uber-bac à sable applications de l'iPhone, vous n'avez pas accès aux dossiers partagés vous serais normalement être en mesure de les utiliser quand on fait du bureau de développement (par exemple, un dossier Documents communs qui vit sous un dossier accueil de l'utilisateur pour les applications qui ont accès).

Au lieu de cela, votre application a sa propre hiérarchie de dossiers, c'est comme de son propre ensemble de dossiers qui devraient être partagés entre les applications.

Le moyen le plus facile pour voir ce que votre application structure du dossier de ressemble sur le téléphone, c'est de regarder le dossier de l'iPhone simulateur utilise pour l'installation d'applis, paramètres, bla bla bla. Sur ma machine (je ne me souviens pas si c'est configurable, mais c'est probablement la même chose sur votre système), vous pouvez obtenir le dossier par ce chemin:

~/Library/Application Support/iPhone Simulator

À l'intérieur de ça, il y a un Utilisateur/Applications dossier qui contient les applications que vous avez installé pour le simulateur. Descendez dans l'un de ces dossiers, et vous pouvez voir la structure de dossier de votre application aura accès à sur le téléphone.

Pour stocker les fichiers que vous souhaitez persisté à travers appli des sessions, votre application dossier de Documents est l'endroit. Ce n'est pas votre seul choix pour la création de fichiers, mais c'est le droit de choix pour ce travail. En plus de vos fichiers stockés correctement, en les gardant dans le dossier Documents auront elles aussi sauvegardées par iTunes lorsque l'utilisateur synchronise.

Avec MonoTouch, vous pouvez obtenir votre application Documents du chemin d'accès au dossier avec Environment.GetFolderPath(Environment.SpecialFolder.Personal);

Si vous souhaitez faire un test, c'est une partie extrêmement simple code qui vais écrire un fichier appelé "out.txt" à votre application dossier de Documents. Ce code peut également lire le contenu du fichier de montrer qu'il a été créé - pour de plus amples vérifications, simulateur le dossier Applications de tri de l'application des dossiers par la date à laquelle ils ont été modifiés, détaillez le plus récemment modifié, et regarder à l'intérieur de son dossier Documents, vous les trouverez "out.txt" (vous ne pouvez pas trouver l'application du dossier par son nom parce que, lorsque votre application est installée, elle est placée à l'intérieur d'un dossier avec un nom comme "2B3CA854-FADB-4DDC-9732-0E61B3DD8D8C" - trier les dossiers par la date à laquelle ils ont été modifiées point que vous avez le plus récemment modifié app, qui, dans ce cas, est-ce que l'app contient le code suivant):

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

Alors, la seule chose ici qui est vraiment spécifique pour iPhone est de savoir que "l'Environnement.SpecialFolder.Personnel" cartes à votre application dossier de Documents. Au-delà, cela .Net comme d'habitude.

Et, encore une fois, c'était sans doute exagéré, mais je voulais répondre suffisamment à fond pour tout le monde qui le voit - espérons que cela aide :)

13voto

miguel.de.icaza Points 27138

Le guide pratique suivant du site du guide Xamarin.iOS contient quelques pointeurs vers l'emplacement de stockage de vos fichiers:

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

8voto

Gonzalo Points 11758

Vous pouvez faire quelque chose comme ça au moment de l'exécution:

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

et cela va créer le fichier. Pour l'ouvrir en lecture, utilisez le même Path.Combine() mais avec StreamReader .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X