Accéder aux fichiers en C#

string fileName;
string fileContent;

// On interdit la sélection de plusieurs fichiers.
openFileDialog1.Multiselect = false;

// On supprime le nom de fichier, qui ici vaut "openFileDialog1" (avant sélection d'un fichier).
openFileDialog1.FileName = string.Empty;

// On met des filtres pour les types de fichiers : "Nom|*.extension|autreNom|*.autreExtension" (autant de filtres qu'on veut).
openFileDialog1.Filter = "Fichiers texte|*.txt|Tous les fichiers|*.*";

// Le filtre sélectionné : le 2e (là on ne commence pas à compter à 0).
openFileDialog1.FilterIndex = 2;

// On affiche le dernier dossier ouvert.
openFileDialog1.RestoreDirectory = true;

// Si l'utilisateur clique sur "Ouvrir"...
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
	try
	{
		// On récupère le nom du fichier.
		fileName = openFileDialog1.FileName;
		
		Stream myStream =  openFileDialog1.OpenFile();
		
		if (myStream != null)
		{
			using (myStream)
			{
				using (StreamReader reader = new StreamReader(myStream, Encoding.UTF8))
				{
					fileContent = reader.ReadToEnd();
				}
			}
		}
	}
	// En cas d'erreur...
	catch (Exception ex)
	{
		MessageBox.Show("Une erreur est survenue lors de l'ouverture du fichier : {0}.", ex.Message);
	}
}
saveFileDialog1.Filter = "Fichiers texte|*.txt|Tous les fichiers|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
	try
	{
		Stream myStream = saveFileDialog1.OpenFile();

		if (myStream != null)
		{
			using (myStream)
			{
				using (StreamWriter writer = new StreamWriter(myStream, Encoding.UTF8))
				{
					writer.Write(fileContent);
				}
			}
		}
	}
	catch (Exception ex)
	{
		MessageBox.Show("Une erreur est survenue lors de l'écriture du fichier: {0}.", ex.Message);
	}
}