it-swarm-eu.dev

Il modo più semplice per leggere e scrivere su file

Ci sono molti modi diversi di leggere e scrivere file ( file di testo , non binari) in C #. 

Ho solo bisogno di qualcosa che sia facile e usi la minor quantità di codice, perché lavorerò molto con i file nel mio progetto. Ho solo bisogno di qualcosa per string poiché tutto ciò di cui ho bisogno è leggere e scrivere strings.

270
ApprenticeHacker

Usa File.ReadAllText e File.WriteAllText .

Non potrebbe essere più semplice ...

Esempi MSDN:

// Create a file to write to.
string createText = "Hello and Welcome" + Environment.NewLine;
File.WriteAllText(path, createText);

// Open the file to read from.
string readText = File.ReadAllText(path);
438
vc 74

Oltre a File.ReadAllText, File.ReadAllLines e File.WriteAllText (e simili helper della classe File) mostrati in un'altra risposta puoi usare StreamWriter / StreamReader classes.

Scrivere un file di testo:

using(StreamWriter writetext = new StreamWriter("write.txt"))
{
    writetext.WriteLine("writing in text file");
}

Leggere un file di testo:

using(StreamReader readtext = new StreamReader("readme.txt"))
{
   string readMeText = readtext.ReadLine();
}

Gli appunti:

  • Puoi usare readtext.Close() invece di using , ma non chiuderà file/reader/writer in caso di eccezioni
  • Tieni presente che il percorso relativo è relativo alla directory di lavoro corrente. Potresti voler usare/costruire un percorso assoluto.
  • Manca using/Close è una ragione molto comune di "perché i dati non vengono scritti nel file".
137
Bali C
FileStream fs = new FileStream(txtSourcePath.Text,FileMode.Open, FileAccess.Read);
using(StreamReader sr = new StreamReader(fs))
{
   using (StreamWriter sw = new StreamWriter(Destination))
   {
            sw.writeline("Your text");
    }
}
14
Swapnil
using (var file = File.Create("pricequote.txt"))
{
    ...........                        
}

using (var file = File.OpenRead("pricequote.txt"))
{
    ..........
}

Semplice, facile e dispone/pulisce l'oggetto una volta che hai finito.

10
Ankit Dass

Il modo più semplice per leggere da un file e scrivere in un file:

//Read from a file
string something = File.ReadAllText("C:\\Rfile.txt");

//Write to a file
using (StreamWriter writer = new StreamWriter("Wfile.txt"))
{
    writer.WriteLine(something);
}
9
yazarloo

@AlexeiLevenkov mi ha indicato un altro "metodo più semplice", ovvero il metodo extension . Ci vuole solo una piccola codifica, quindi fornisce il modo più semplice di leggere/scrivere, in più offre la flessibilità di creare variazioni in base alle proprie esigenze personali. Ecco un esempio completo:

Questo definisce il metodo di estensione sul tipo string. Nota che l'unica cosa che conta davvero è l'argomento della funzione con la parola chiave this, che fa riferimento all'oggetto a cui è collegato il metodo. Lo spazio dei nomi e le dichiarazioni di classe sono opzionali.

using System.IO;//File, Directory, Path

namespace Lib
{
    /// <summary>
    /// Handy string methods
    /// </summary>
    public static class Strings
    {
        /// <summary>
        /// Extension method to write the string Str to a file
        /// </summary>
        /// <param name="Str"></param>
        /// <param name="Filename"></param>
        public static void WriteToFile(this string Str, string Filename)
        {
            File.WriteAllText(Filename, Str);
            return;
        }

        // of course you could add other useful string methods...
    }//end class
}//end ns

Ecco come usare string extension method, nota che si riferisce automagicamente al class Strings:

using Lib;//(extension) method(s) for string
namespace ConsoleApp_Sandbox
{
    class Program
    {
        static void Main(string[] args)
        {
            "Hello World!".WriteToFile(@"c:\temp\helloworld.txt");
            return;
        }

    }//end class
}//end ns

Non l'avrei mai trovato da solo, ma funziona benissimo, quindi ho voluto condividerlo. Divertiti!

8
Roland

Oppure, se ti piacciono davvero le linee:

System.IO.File contiene anche un metodo statico WriteAllLines , quindi puoi eseguire:

IList<string> myLines = new List<string>()
{
    "line1",
    "line2",
    "line3",
};

File.WriteAllLines("./foo", myLines);
4
anhoppe

È buono quando si legge per utilizzare il controllo OpenFileDialog per cercare qualsiasi file che si desidera leggere. Trova il codice qui sotto:

Non dimenticare di aggiungere la seguente istruzione using per leggere i file: using System.IO;

private void button1_Click(object sender, EventArgs e)
{
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
         textBox1.Text = File.ReadAllText(openFileDialog1.FileName);  
    }
}

Per scrivere file puoi usare il metodo File.WriteAllText.

3
SamekaTV

Questi sono i metodi migliori e più comunemente usati per scrivere e leggere file:

using System.IO;

File.AppendAllText(sFilePathAndName, sTextToWrite);//add text to existing file
File.WriteAllText(sFilePathAndName, sTextToWrite);//will overwrite the text in the existing file. If the file doesn't exist, it will create it. 
File.ReadAllText(sFilePathAndName);

Il vecchio modo, che mi è stato insegnato al college, è stato quello di utilizzare il lettore di stream/stream writer, ma i metodi File I/O sono meno goffi e richiedono meno righe di codice. Puoi digitare "File". nel tuo IDE (assicurati di includere l'istruzione di importazione System.IO) e vedi tutti i metodi disponibili. Di seguito sono riportati esempi di metodi per leggere/scrivere stringhe da/verso file di testo (.txt.) Utilizzando un'app Windows Form.

Aggiungi testo a un file esistente:

private void AppendTextToExistingFile_Click(object sender, EventArgs e)
{
    string sTextToAppend = txtMainUserInput.Text;
    //first, check to make sure that the user entered something in the text box.
    if (sTextToAppend == "" || sTextToAppend == null)
    {MessageBox.Show("You did not enter any text. Please try again");}
    else
    {
        string sFilePathAndName = getFileNameFromUser();// opens the file dailog; user selects a file (.txt filter) and the method returns a path\filename.txt as string.
        if (sFilePathAndName == "" || sFilePathAndName == null)
        {
            //MessageBox.Show("You cancalled"); //DO NOTHING
        }
        else 
        {
            sTextToAppend = ("\r\n" + sTextToAppend);//create a new line for the new text
            File.AppendAllText(sFilePathAndName, sTextToAppend);
            string sFileNameOnly = sFilePathAndName.Substring(sFilePathAndName.LastIndexOf('\\') + 1);
            MessageBox.Show("Your new text has been appended to " + sFileNameOnly);
        }//end nested if/else
    }//end if/else

}//end method AppendTextToExistingFile_Click

Ottieni il nome del file dall'utente tramite il file Explorer/apri la finestra di dialogo (sarà necessario selezionare i file esistenti).

private string getFileNameFromUser()//returns file path\name
{
    string sFileNameAndPath = "";
    OpenFileDialog fd = new OpenFileDialog();
    fd.Title = "Select file";
    fd.Filter = "TXT files|*.txt";
    fd.InitialDirectory = Environment.CurrentDirectory;
    if (fd.ShowDialog() == DialogResult.OK)
    {
        sFileNameAndPath = (fd.FileName.ToString());
    }
    return sFileNameAndPath;
}//end method getFileNameFromUser

Ottieni il testo da un file esistente:

private void btnGetTextFromExistingFile_Click(object sender, EventArgs e)
{
    string sFileNameAndPath = getFileNameFromUser();
    txtMainUserInput.Text = File.ReadAllText(sFileNameAndPath); //display the text
}
2
technoman23

Stai cercando le classi File, StreamWriter e StreamReader.

0
SLaks
     class Program
    { 
         public static void Main()
        { 
            //To write in a txt file
             File.WriteAllText("C:\\Users\\HP\\Desktop\\c#file.txt", "Hello and Welcome");

           //To Read from a txt file & print on console
             string  copyTxt = File.ReadAllText("C:\\Users\\HP\\Desktop\\c#file.txt");
             Console.Out.WriteLine("{0}",copyTxt);
        }      
    }
0