Obsługa I/O klasa

0

mam następujący problem. piszę prosty program w którym chce zapisać dane. mam 2 pytania. jedno dotyczy miejsca zapisu pliku drugie sposobu modyfikacji zmian.

mój kod:

 // Create a file to write to.           
            string path = "C:\\data.txt";
            //otworzyć plik
            if (!File.Exists(path))//jeśli plik jeszcze nie istnieje
            {
                FileStream fs = new FileStream("C:\\data.txt", FileMode.CreateNew);
                StreamWriter sw = new StreamWriter(fs);
                //zapisać wstep
                sw.WriteLine("....");
                sw.Close();
            } 
            else if (File.Exists(path))//jeśli plik już istnieje? dopisać zmiany
            {
                FileStream save_end_file = new FileStream("C:\\data.txt", FileMode.Append);//dopisywanie do końca pliku
                StreamWriter sw2 = new StreamWriter(save_end_file);
                sw2.WriteLine("...");
                save_end_file.Close();
                //dodawać dane                     
                MessageBox.Show("Udało się utworzyć plik! plik ten bedzie modyfikowny", "...", MessageBoxButtons.OK);

            }
            else
            {
                //nie udało się utwożyć pliku albo go nie ma?
                MessageBox.Show("Pliku nie da rady zaktualizować!");
            }
  1. chce aby plik tworzył się w katalogu z programem a nie na c:\
  2. wysypuje się przy modyfikacji :/
0
System.IO.Directory.GetCurrentDirectory()

oraz

                 sw2.WriteLine("...");
                sw2.Flush();
                save_end_file.Close();
0

new FileStream("C:\\data.txt ... => new FileStream("data.txt ...

if (!File.Exists(path)) { ... }
else if (File.Exists(path)) { ... }
else { ... }

:D

save_end_file.Close();
//dodawać dane

Jeśli jest tak jak napisałeś/aś - najpierw musisz dodać dane a później dopiero zamykasz plik. No i wypada zamknąć też sw2. I MessageBox nie pasuje.
Jeśli nie o to chodzi -> zapisywanie w folderze C:\ (w każdym katalogu głównym dysku) wymaga praw administratora.
Jeśli nie o to chodzi -> podaj treść błędu.

0

Nie trzeba się tak rozdrabiać, FileMode.Append tworzy nowy plik jeśli jeszcze nie istnieje.

0

zapisywanie w folderze C:\ (w każdym katalogu głównym dysku) wymaga praw administratora.
Jeśli nie o to chodzi -> podaj treść błędu.

już tłumacze. zależy mi aby kazdy plik byl tworzony w katalogu z programem. jak sie podaje sciezke względną w C#?

0
string path = "dane.txt";

?

0

ok wygląda na to że już wszystko wiem co miałem wiedzieć. Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1