Piszą programy, nie raz będzie potrzeba aby otworzyć lub zapisać jakiś plik – nie tylko tekstowy. Dzisiaj przedstawię jak tego dokonać w programie Microsoft Visual. Otwarcie jak i zamknięcie będzie wykorzystywało kontrolkę dodawaną na formatkę. Funkcja otwierania będzie wykonana inaczej niż zapisywania.
Zacznijmy od Otwarcia pliku – w tym celu na naszą formatkę dodajemy kontrolkę OpenFileDialog, która to spowoduje otwarcie okienka dialogowego z możliwością wyboru pliku do otwarcia. We właściwościach, możemy zmienić jego nazwę, oraz określić jakie pliki mają być wyświetlane (wpisując *. i po kropce rozszerzenie wyświetlone będą pliki z danym rozszerzeniem), oraz z jakiej domyślnej lokalizacji ma zaczynać (InitialDirectory).

W kodzie źródłowym również możemy określić jakie pliki mają być wyświetlane, oraz z jakiej lokalizacji ma zaczynać wyszukiwanie. W tym przypadku zastosowaliśmy ustawienia programu, zostaną opisane w jednym z kolejnych wpisów.
Otworz.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
Otworz.InitialDirectory = Properties.Settings.Default.Path_open_file;
Otwieramy okienku wyboru danego pliku, a po zamknięciu go poprzez OK zapisujemy lokalizację do zmiennej, oraz strumień otwieranych danych
if( Otworz.ShowDialog() == DialogResult.OK){
filePath = Otworz.FileName;
var fileStream = Otworz.OpenFile();
Tworzymy nowy strumień danych i zapisujemy odczytany plik do bufora, a następnie wyświetlamy potwierdzenie o prawidłowym otwarciu pliku – w tym przypadku tekst wyświetlany będzie aplecie status_bar – jest to dodatek, nie jest potrzebny aby wszystko działa, ale dobrze jest mieć jakieś potwierdzenie czy zostało wszystko poprawnie wykonane.
using (StreamReader reader = new StreamReader(fileStream)){
fileContent = reader.ReadToEnd();
Podsumowanie_text.AppendText("-----\n\rOtwarto pomyślnie plik: " + Otworz.SafeFileName);
}
Cały programy umieszczamy np. w kodzie obsługi przycisku. Wygląda on następująco.
Otworz.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
Otworz.InitialDirectory = Properties.Settings.Default.Path_open_file;
if( Otworz.ShowDialog() == DialogResult.OK){
filePath = Otworz.FileName;
var fileStream = Otworz.OpenFile();
//zapisanie do ustawień ostatniej ścieżki
Properties.Settings.Default.Path_open_file = filePath.Replace(Otworz.SafeFileName,"");
using (StreamReader reader = new StreamReader(fileStream)){
fileContent = reader.ReadToEnd();
Podsumowanie_text.AppendText("-----\n\rOtwarto pomyślnie plik: " + Otworz.SafeFileName);
}
}
Teraz przejdźmy do zapisu bufora do pliku. W tym celu też wykorzystamy kontrolkę, ale w celu określenia lokalizacji zapisu pliku, natomiast cały proces zapisu będzie odbywał się przy użyciu przestrzeni IO. Wybieramy SaveFileDialog. W właściwościach tej kontrolki można m.in. nadać mu swoją nazwę.

Zapis pliku umieszczamy np. w kodzie przycisku, który po naciśnięciu spowoduje otwarcie okienka wyboru lokalizacji jego zapisu. Po potwierdzeniu lokalizacji, zapisywany jest bufor do wskazanego pliku poprzez File.WriteAllText. Po zapisaniu danych wyświetlana jest informacja potwierdzająca zapis pliku.
if(Zapisz.ShowDialog() == DialogResult.OK){
File.WriteAllText(Zapisz.FileName, doZapisu.ToString());
Podsumowanie_text.AppendText("\n\rUtworzono i zapisano dane do nowego pliku:\n" + Zapisz.FileName + "\n----");
}
Po więcej informacji odnoszę do dokumentacji z Microsoftu: