operacje plikowe

0

Witajcie. Mam pytanie natury jak podejrzewam dość podstawowej: czy należy tworzenie ale również odczyt pliku zawrzeć w bloku try-catch bo mam z tym problem skoro za pomocą File.Exist sprawdane jest istnienie pliku... Dzięki za podpowiedź

0
using System;
using System.IO;
class Test
{
   static void Main() {
      using (TextWriter w = File.CreateText("log.txt")) {
         w.WriteLine("This is line one");
         w.WriteLine("This is line two");
      }
      using (TextReader r = File.OpenText("log.txt")) {
         string s;
         while ((s = r.ReadLine()) != null) {
            Console.WriteLine(s);
         }
      }
   }
}
0

Dzięki za podpowiedź. Ja mam taki oto fragment kodu - bardzo proszę jeszcze o komentarz... Raz jeszcze wielkie dzięki.

            try
            {  
                // Ensure that the target does not exist. - Zapewnij, że cel nie istnieje
                if (File.Exists(plikRaport))
                    File.Delete(plikRaport);
            }
            catch (Exception ex)
            {    
                string zzz = ex.ToString();// aby coś z tym zrobić - by nie zgłaszał braku użycia...    
                MessageBox.Show("awaria...", "w OnLoad()", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }            
            
0

No dobrze ale w odniesieniu nie do pliku a do foldera ?

0

oto dlaczego dopytuję... posiadam projekt z codeproject.com w którym jest poniższy kod, który służy do tworzenia pobierania plików oraz folderów. Projekt zawiera metody które wymieniłem wszystkie oparte na poniższym fragmencie... widoczny jest blok try-catch, stąd moja dociekliwość co o tym sądzicie...

        public void Download(string filePath, string fileName)
        {// Simple FTP demo application using C#_Net 2_0 - CodeProject
            //bool pobrano = false;//nytec-2014-06-15
            //
            FtpWebRequest reqFTP;
            try
            {
                //filePath = <<The full path where the file is to be created.>>, 
                //fileName = <<Name of the file to be created(Need not be the name of the file on FTP server).>>
                FileStream outputStream = new FileStream(filePath + "\\" + fileName, FileMode.Create);// tworzy pusty plik o wskazanej nazwie w listBox
                // tworzy w lokalizacji lokal komputer na moim dysku lokal 
                // nowy --> PUSTY<-- plik: baba-1.zip 
                // następnie chce -->do niego<-- skopiować elementy lub ogólnie zawartość, ponieważ po utworzeniu ma wielkość 0 kB
                //
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileName));
0

No dobrze ale w odniesieniu nie do pliku a do foldera ?

klasa Path

widoczny jest blok try-catch, stąd moja dociekliwość co o tym sądzicie...

to zależy, co chcesz osiągnąć. każda operacja plikowa może się nie udać z wielu powodów. jeżeli uważasz że tolerowalne jest wywalenie w takiej sytuacji programu z komunikatem o wyjątku, to trykacza nie musisz robić.

w takim kodzie

                if (File.Exists(plikRaport))
                    File.Delete(plikRaport);

potencjalnie może się wiele rzeczy nie udać: może nie być uprawnień do skasowania tego pliku. (nawet jeżeli były wcześniej, to ktoś mógł właśnie grzebać w uprawnieniach i je odebrać).
może plik nie istnieć (nawet jeżeli File.Exists zwróciło true, to plik mógł być usunięty dokładnie w tym momencie przed wywołaniem File.Delete).
może plik być chwilowo chroniony (otwarty przez inny program)
może być nośnik zabezpieczony przed zapisem, albo być tylko do odczytu.
może być uszkodzony (niespójny) system plików i operacja usuwania się nie powiedzie.
może wystąpić awaria sprzętu (błąd zapisu)
itd.

0

na załączonym obrazku pokazuję program narzędziowy, który zarządza plikami oraz folderami na serwerze FTP. Tworzone są pliki oraz foldery oraz następnie usuwane, zarówno pliki jak i foldery; ponadto pliki są pakowane do zip by ograniczać ruch sieciowy po czym pobierane z serwera... tak trochę chaotycznie opisuję co się dzieje natomiast generalnie jest wydaje mi się potrzeba zabezpieczenia tym operacji ponieważ program na komputerze lokalnym również tworzy foldery na dysku oraz pliki wysyłane są na serwer a pobrany w postaci zip rozpakowywany i przemieszczany do różnych lokalizacji na wielu dyskach. był zapis rok temu na płycie DVD jednakże obecnie okazało się iż był w ogóle niemożliwy i jest zapis na pendrive. Nie potrafię jeszcze nie próbowałem wykorzystać zestawu dysków czyli konfiguracji RAID póki co bo to są testy chwilowo całego silnika usługi który obecnie wszystkie procedury operacje plikowe oraz związane z folderami próbuję skutecznie zabezpieczyć przed ewentualnymi problemami. Dzięki za podpowiedzi

0

chciałem dopowiedzieć, iż zastosowałem mechanizm wzorowany na transakcjach w SQL Server, tj. nic nie zostanie skasowane bez upewnienia się czy zostało skopiowane do nowej - nowych lokalizacji. Zwłaszcza pliki zawierające dane klientów, które muszę archiwizować dla Urzędu Skarbowego

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