none
Como leer un archivo de texto. RRS feed

  • Pregunta

  • Saludos,

    Nuevamente acudo al foro porque estoy atorado, quiero poder crear y posteriormente desde otro form leer un archivo de texto.

    Hasta el momento solo he logrado poder crearlo, pero no ya me bloquee y no somo acceder a el para poder leerlo.

    

    A continuación anexo como lo creo:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Xamarin.Forms;
    using Xamarin.Forms.Xaml;
    
    namespace ProyAppPortatil
    {
    	[XamlCompilation(XamlCompilationOptions.Compile)]
    	public partial class ConfiguraFtp : ContentPage
    	{
            IcreaArchivoTexto salvaTexto = DependencyService.Get<IcreaArchivoTexto>();
    
            public ConfiguraFtp ()
    		{
    			InitializeComponent ();
                salvaTexto.OnFileSave += OnFileSave;
            }
    
            private async void OnFileSave(object sender, GuardarTexto e)
            {
                if (e.FileSave)
                {
                    await this.DisplayAlert("Mensaje", "Datos guardados correctamente.", "Ok");
                }
                else
                {
                    await this.DisplayAlert("Error", "Los datos no se guardaron.", "Ok");
                }
            }
    
            private async void BtnGuardarDatosFtp_Clicked(object sender, EventArgs e)
            {
                if (string.IsNullOrWhiteSpace(txtUrlFtp.Text))
                {
                    await this.DisplayAlert("Advertencia", "El campo Ftp Url no debe ser nulo.", "Ok");
                    txtUrlFtp.Focus();
                }
                else if (string.IsNullOrWhiteSpace(txtUserFtp.Text))
                {
                    await this.DisplayAlert("Advertencia", "El campo Ftp Usuario no debe ser nulo.", "Ok");
                    txtUserFtp.Focus();
                }
                else if (string.IsNullOrWhiteSpace(txtPassFtp.Text))
                {
                    await this.DisplayAlert("Advertencia", "El campo Ftp Contraseña no debe ser nulo.", "Ok");
                    txtPassFtp.Focus();
                }
                else
                {
                    Seguridad seguridad = new Seguridad();
    
                    string encriptaFtpUrl = seguridad.EncryptToString(txtUrlFtp.Text.Trim());
                    string encriptaFtpUser = seguridad.EncryptToString(txtUserFtp.Text.Trim());
                    string encriptaFtpPass = seguridad.EncryptToString(txtPassFtp.Text.Trim());
    
                    salvaTexto.EscriveTexto(encriptaFtpUrl,
                                     encriptaFtpUser,
                                     encriptaFtpPass);
                }
            }
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ProyAppPortatil
    {
        public interface IcreaArchivoTexto
        {
            void EscriveTexto(string urlFtp, string userFtp, string passftp);      
            event EventHandler<GuardarTexto> OnFileSave;       
        }
    
        public class GuardarTexto : EventArgs
        {
            public bool FileSave = false;
            public GuardarTexto(bool fileSave)
            {
                FileSave = fileSave;
            }
        }    
    }
    Por favor
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using ProyAppPortatil.Droid;
    using Xamarin.Forms;
    
    [assembly: Dependency(typeof(CreaArchivoTexto))]
    namespace ProyAppPortatil.Droid
    {
        public class CreaArchivoTexto : IcreaArchivoTexto
        {
            public event EventHandler<GuardarTexto> OnFileSave;        
    
            public void EscriveTexto(string urlFtp, string userFtp, string passftp)
            {
                string fileName = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), "ConfigFtp.txt");
                //Directory.CreateDirectory(fileName);
    
                StreamWriter datosFtp = new StreamWriter(fileName);
                datosFtp.WriteLine(urlFtp);
                datosFtp.WriteLine(userFtp);
                datosFtp.WriteLine(passftp);
                datosFtp.Close();
    
                if (OnFileSave != null)
                    OnFileSave.Invoke(this, new GuardarTexto(true));
            }        
        }
    }

    Necesito poder acceder a ese texto desde otro form y leerlo, de antemano agradesco cualquier ayuda.

    Saludos desde Tijuana, BC.

    jueves, 9 de enero de 2020 0:42

Respuestas

  • hola

    >>Necesito poder acceder a ese texto desde otro form y leerlo

    no entiendo, is tienes el path al archivo solo lo lees con la misma tecnica que lo escribes

        public class LeerArchivoTexto : IleerArchivoTexto
        {
    
            public string LeerTexto()
            {
                string fileName = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), "ConfigFtp.txt");
    
                using (StreamReader sr = new StreamReader(path)) 
                {
                   return sr.ReadToEnd();
                }
    
            }        
        }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de enero de 2020 12:41

Todas las respuestas

  • hola

    >>Necesito poder acceder a ese texto desde otro form y leerlo

    no entiendo, is tienes el path al archivo solo lo lees con la misma tecnica que lo escribes

        public class LeerArchivoTexto : IleerArchivoTexto
        {
    
            public string LeerTexto()
            {
                string fileName = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), "ConfigFtp.txt");
    
                using (StreamReader sr = new StreamReader(path)) 
                {
                   return sr.ReadToEnd();
                }
    
            }        
        }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de enero de 2020 12:41
  • Hola Leandro de antemano agradezco tu tiempo. 

    Y disculpa pero de que manera yo cargaria el texto en mi form?

    Saludos.

    jueves, 9 de enero de 2020 19:02
  • >>pero de que manera yo cargaria el texto en mi form?

    depende de como estes asignando lo que lees del archivo a la propiedad del viewmodel que luego asignes en el binding del textbox


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de enero de 2020 23:42
  • Te anexo como segun yo quiero seria la carga del archivo.

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ProyAppPortatil
    {
        public interface IleerArchivoTexto
        {
            string LeerTexto();
            event EventHandler<AbrirTexto> OnFileRead;
        }
    
        public class AbrirTexto : EventArgs
        {
            public bool FileRead = false;
            public AbrirTexto(bool fileRead)
            {
                FileRead = fileRead;
            }
        }
    }

    using ProyAppPortatil.Droid;
    using System;
    using System.IO;
    using Xamarin.Forms;
    
    [assembly: Dependency(typeof(LeerArchivoTexto))]
    namespace ProyAppPortatil.Droid
    {
        public class LeerArchivoTexto : IleerArchivoTexto
        {
            public event EventHandler <AbrirTexto> OnFileRead;      
    
            public string LeerTexto()
            {
                string fileName = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), "ConfigFtp.txt");
    
                using (StreamReader sr = new StreamReader(fileName))
                {
                    Seguridad seguridad = new Seguridad();                
    
                    string leeUrlFtp = sr.ReadLine();
                    string leeUserFtp = sr.ReadLine();
                    string leePassFtp = sr.ReadLine();
    
                    string decriptaUrlFtp = leeUrlFtp;
                    string decriptaUserFtp = leeUserFtp;
                    string decriptaFtp = leePassFtp;
    
                    string datosTodos = decriptaUrlFtp + "," + decriptaUserFtp + "," + decriptaFtp;
    
                    if (OnFileRead != null)
                        OnFileRead.Invoke(this, new AbrirTexto(true));
    
                    return (datosTodos);
                }            
            }        
        }
    }

    using System;
    using System.IO;
    
    using Xamarin.Forms;
    using Xamarin.Forms.PlatformConfiguration;
    
    namespace ProyAppPortatil
    {
        //[XamlCompilation(XamlCompilationOptions.Compile)]
        public partial class ActualizaArticulos : ContentPage
    	{
            IleerArchivoTexto readTexto = DependencyService.Get<IleerArchivoTexto>();
            IDownloader downloader = DependencyService.Get<IDownloader>();
    
            string urlFtp;
            string userFtp;
            string passFtp;
    
            public ActualizaArticulos ()
    		{
    			InitializeComponent ();
                downloader.OnFileDownloaded += OnFileDownloaded;
                downloader.OnFilePogressDownload += OnFilePogressDownload;            
            }
    
            private void OnFileRead(object sender, AbrirTexto e)
            {
                if (e.FileRead)
                {
                    string datosFtp = readTexto.LeerTexto();
                    string[] arreglo = datosFtp.Split(',');
    
                    urlFtp = arreglo[0];
                    userFtp = arreglo[1];
                    passFtp = arreglo[2];
                }           
            }
    
            private void OnFilePogressDownload(object sender, DownloadProgressChangedEventArgs e)
            {
                barraProgreso.ProgressTo(1.0, 5000, Easing.Linear);
                lbtextoProgreso.Text = "Descargando catalogos..." + Math.Round(barraProgreso.Progress * 100) + "%";
            }
    
            private void OnFileDownloaded(object sender, DownloadEventArgs e)
            {
                if (e.FileSaved)
                {
                    lbtextoProgreso.Text = "¡Descarga finalizada!...";                
                }            
            }
    
            private void BtnDescargaArticulos_Clicked(object sender, EventArgs e)
            {
                btnDescargaArticulos.IsEnabled = false;
    
                barraProgreso.IsVisible = true;
    
                readTexto.OnFileRead += OnFileRead;
    
                downloader.DownloadFile("ftp://"+ urlFtp+ "/T_XmlTallas.xml", "Xml_Catalogos", userFtp, passFtp); --Aqui es donde quiero usar los datos leidos            
    
                btnInsertarArticulos.IsEnabled = true;
            }
    
            private void BtnInsertarArticulos_Clicked(object sender, EventArgs e)
            {
    
            }       
        }
    }
    Gracias nuevamente.

    viernes, 10 de enero de 2020 0:52