none
Ecriture dans un fichier sous android RRS feed

  • Question

  • Bonjour,

      Je suis actuellement en train d'essayer d'écrire dans un fichier texte sous android mais celui ci ne se créer pas et aucune erreur ne m'est retourné .

      Voici le code de la classe d'écriture du fichier .

    using System;
    using Xamarin.Forms;
    using CEADetectGaz.Droid;
    
    using System.Text;
    using Java.IO;
    
    
    [assembly: Dependency (typeof(CsvExporter))]
    
    namespace CEADetectGaz.Droid
    {
    	public class CsvExporter: ICsvExporter
    	{
    		private const String endline = "\n";
    		private String separator;
    		private StringBuilder builder;
    		private string fullpath;
    
    		public CsvExporter ()
    		{
    			builder = new StringBuilder ();
    		}
    
    		public CsvExporter (string filename, string separator)
    		{
    			Open (filename, separator);
    		}
    
    		#region ICsvExporter implementation
    
    		public void Open (string filename, string separator)
    		{
    			this.separator = separator;
    
    			//	var rootpath =	Environment.GetFolderPath(Environment.CurrentDirectory); 
    
    			//	fullpath = Path.Combine (Environment.CurrentDirectory,filename);
    
    			//File.Create (rootpath );
    		}
    
    		public void AddField (int value)
    		{
    			builder.Append (value);
    		}
    
    		public void AddField (float value)
    		{
    			builder.Append (value);
    		}
    
    		public void AddField (double value)
    		{
    			builder.Append (value);
    		}
    
    		public void AddField (string value)
    		{
    			builder.Append (value);
    		}
    
    		public void AddSeparator ()
    		{
    			builder.Append (separator);
    		}
    
    		public void EndRow ()
    		{
    			builder.AppendLine ();
    		}
    
    		public void Close ()
    		{
    			File file = Android.App.Application.Context.GetDir ("testcea", Android.Content.FileCreationMode.Append);
    			File filedest = new File (file, "test");
    			if (filedest.Exists ())
    				filedest.Delete (); 
    
    			var str = builder.ToString ();
    			byte[] array = GetBytes (str);
    
    			FileOutputStream outstream = new FileOutputStream (filedest);
    			outstream.Write (array, 0, array.Length);
    			outstream.Flush ();
    			outstream.Close ();
    			builder.Clear ();
    
    		}
    
    
    		byte[] GetBytes (string str)
    		{
    			byte[] bytes = new byte[str.Length * sizeof(char)];
    			System.Buffer.BlockCopy (str.ToCharArray (), 0, bytes, 0, bytes.Length);
    			return bytes;
    		}
    
    
    		#endregion
    	}
    }

    Maintenant l’écriture dans le fichier ( ca passe par une interface  ):

    		public async Task ExportToCSV ()
    		{
    			lock (lockflag) {
    
    				ICsvExporter csv = DependencyService.Get<ICsvExporter> ();
    				csv.Open ("test.csv", ";");
    
    
    				var rediter = redvalues.GetEnumerator ();
    				var greeniter = greenvalues.GetEnumerator ();
    				var blueiter = bluevalues.GetEnumerator ();
    
    				for (int i = 0; i < redvalues.Count; i++) {
    					//write CSV
    
    					csv.AddField (rediter.Current.X.ToString ());
    					csv.AddSeparator ();
    					csv.AddField (rediter.Current.Y.ToString ());
    					csv.AddSeparator ();
    					csv.AddField (greeniter.Current.Y.ToString ());
    					csv.AddSeparator ();
    					csv.AddField (blueiter.Current.Y.ToString ());
    					csv.EndRow ();
    				}
    				csv.Close ();
    			}
    		}

    Puis le bouton : 

    		async void Buttonsave_Clicked (object sender, EventArgs e)
    		{
    			await graphmanager.ExportToCSV ();
    		}

    Voila je pense que vous avais tous et j'espère trouver une solution.

    Merci d'avance à tous ceux qui vont prendre le temps de m'aider.

    Un développeur.

    mardi 1 décembre 2015 08:46

Réponses