Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180

    [C#]Inserire testo dentro txt in una precisa posizione

    Salve ragazzi, ho la necessità di inserire alcune righe di testo dentro un file txt, in una posizione ben precisa. Ad esempio il file è così composto:

    file di testo:
    1a riga
    2a riga
    3a riga
    4a riga
    5a riga

    testo mio da inserire
    1a riga mia
    2a riga mia

    Io voglio inserire queste due righe a partire dalla terza riga ottenendo questo risultato.

    file di testo risultante:
    1a riga
    2a riga
    1a riga mia
    2a riga mia
    3a riga
    4a riga
    5a riga


    Esiste qualche semplice funzione c#che permette di fare questo?

    Ps. Ho necessità di mantenere la compatibilità del codice con Windows Mobile!

  2. #2
    Basta che leggi il file in lettura e memorizzi i dati in una List<string>
    Dopo di che lo riapri in scrittura e ci scrivi su tutte le cose che vuoi te

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Il problema è come faccio a posizionarmi in quella precisa riga!!

  4. #4
    Leggi tutto il file e lo memorizzi su una list.
    Quando lo scrivi di nuovo su file, conti le righe che hai copiato e al punto giusto ci scrivi le tue. Dopo di che riprendi a scrivere i dati dentro alla lista fino a che non l'hai scritta tutta.

    Per esempio, se devi scrivere "non" alla posizione 3 di sto file

    - Ciao
    - io
    - mi
    - chiamo
    - genivaldo

    Quindi tra "io" e "mi" devi fare una cosa del genere:

    Streamreader sr=new Streamreader(....);
    try{
    //apri file
    }
    catch{
    //eccezione che file non esiste
    }

    List<string> testo=new List<string>();
    while(!sr.endoffile()){
    testo.Add(sr.GetLine());
    }

    int posizione_inserire=2; //PERCHè SI PARTE DA ZERO
    if(posizione_inserire>=testo.count()){
    // gestire eccezione
    }

    Streamwriter sw=new StreamWriter....
    try{
    //apertura file in scrittura...
    }
    catch(){
    //solite menate
    }
    for(int i=0;i<testo.Count();i++){
    if(i==posizione_inserire){
    sw.WriteLine("non");
    }
    sw.WriteLine(testo.ElementAt(i));
    }


    CODICE SCRITTO QUI E NON TESTATO... CONTROLLALO

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Ciao e grazie mille per l'aiuto!!!

    Ho qualche piccolo problema, mi manca la using per queste istruzioni!

    [/B]
    testo.Add(sr.GetLine());
    if(posizione_inserire>=testo.count()){
    for(int i=0;i<testo.Count();i++){
    sw.WriteLine(testo.ElementAt(i));



  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Allora, l'ho riadattato così, ma non funziona, alla fine ottengo un file vuoto!
    codice:
      string strTextFileName = "C:\\b.txt";
               
                //ArrayList lines = new ArrayList();
                StreamReader sr = new StreamReader(strTextFileName);
                string[] testo = File.ReadAllLines(strTextFileName);                     
                int posizione_inserire=2; //PERCHè SI PARTE DA ZERO
                if(posizione_inserire>=testo.Count()){
                // gestire eccezione 
                   }
                sr.Close();
                for (int i = 0; i < testo.Length; i++)
                {
                    Console.WriteLine(testo[i]);
    
                }
                Console.ReadLine();
                StreamWriter sw=new StreamWriter(strTextFileName);
                try{
                //apertura file in scrittura...
                }
                catch{
    
                }
                for(int i=0;i<testo.Count();i++){
                if(i==posizione_inserire){
                sw.WriteLine("non");
    
                }            
                sw.WriteLine(testo.ElementAt(i));
    
                }
            }

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    C'è qualcosa che in uscita mi azzera il file!
    codice:
    string strTextFileName = "C:\\b.txt";
                //ArrayList lines = new ArrayList();
                StreamReader sr = new StreamReader(strTextFileName);
                string[] testo = File.ReadAllLines(strTextFileName);                     
                int posizione_inserire=2; //PERCHè SI PARTE DA ZERO
                if(posizione_inserire>=testo.Count()){
                // gestire eccezione 
                   }
                sr.Close();
                
                
                StreamWriter sw=new StreamWriter(strTextFileName);
                for(int i=0;i<testo.Count();i++){
                if(i==posizione_inserire){
                    sw.WriteLine("non");
                }            
                sw.WriteLine(testo.ElementAt(i));
    
                }
               
            }

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ti manca una save o un flush nel writer

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Grazie mille per il super aiuto

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    L'unica cosa che non ho capito, è il compito di questa riga:

    sw.WriteLine(testo.ElementAt(i));
    Cosa fa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.