/ / C # wyjątek IO plik lub katalog jest uszkodzony i nieczytelny - c #, .net

Wyjątek C # IO plik lub katalog jest uszkodzony i nieczytelny - c #, .net

Czasami moja aplikacja zgłasza wyjątek, mówiąc, że plik jest uszkodzony lub nieczytelny. Zasadniczo ten plik jest plikiem dziennika. Moja aplikacja zapisuje zdarzenia i niektóre dane w pliku dziennika.

Moja aplikacja została umieszczona w polu Osadzone wktóry działa system Windows XP. Jedynym sposobem na zamknięcie aplikacji jest odcięcie zasilania od wbudowanego urządzenia. Ponieważ system Windows nie jest zamykany z wdziękiem, plik jest czasami uszkodzony (tak myślę).

Używam dysku SSD firmy Intel jako dysku. Włączyłem buforowanie zapisu na dysku. Czy to powoduje uszkodzenie pliku?

Jeśli przechwycę wyjątek, to czy mogę usunąć ten plik za pomocą funkcji pliku c # (file.delete)?

pozdrowienia

Odpowiedzi:

5 dla odpowiedzi № 1

Buforowanie zapisu nie powoduje uszkodzenia pliku. Wyłączenie urządzenia, gdy plik jest otwarty, powoduje uszkodzenie pliku.

Jeśli przechwycisz wyjątek, powinieneś być w stanie usunąć plik.

Prawdopodobnie możesz zmniejszyć częstotliwość błędów, jeśli zadzwonisz Flush w pliku dziennika za każdym razem, gdy do niego piszesz. Możesz prawie całkowicie wyeliminować błąd, jeśli zamkniesz plik po każdym zapisie (co oczywiście wymagałoby otwarcia go do dołączenia przed każdym zapisem). To może być zbyt drogie.

Nie możesz całkowicie wyeliminuj błąd tak długo, jak to jedyny sposóbzamknij aplikację, aby odłączyć zasilanie. Możesz jednak rozważyć obrócenie dziennika, więc jeśli zostanie on uszkodzony, stracisz tylko ostatnią godzinę (lub 15 minut lub dowolną ilość czasu, którą wykorzystasz na częstotliwość obracania dziennika).