Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od wersji .NET 10, GnuTarEntry oraz PaxTarEntry już nie ustawiają automatycznie pól czasu dostępu (atime) i czasu zmiany (ctime) podczas tworzenia nowych wpisów. Te pola są problematyczne w wpisach tar, ponieważ nie wszystkie czytniki tar je obsługują. Pola będą nadal zachowywane podczas odczytu, a ty możesz je bezpośrednio ustawić. Nie zostaną one jednak ustawione na istniejących wpisach, które początkowo ich nie miały, ani w przypadku konwertowania z innych typów wpisów.
Zachowanie metody TarEntry.ModificationTime jest niezmienione. Jest inicjowany na UtcNow dla wpisów tar utworzonych za pomocą konstruktora, a używa czasu modyfikacji pliku dla wpisów utworzonych na podstawie plików.
Wprowadzono inne drobne poprawki w System.Formats.Tar, aby przyznać priorytet zachowaniu wpisów przy przejściu z odczytu do zapisu bez zmiany.
Wersja wprowadzona
.NET 10
Poprzednie zachowanie
Wcześniej GnuTarEntry i PaxTarEntry, dodawały wartości atime oraz ctime podczas tworzenia nowych wpisów.
Nowe zachowanie
Począwszy od platformy .NET 10, GnuTarEntry i PaxTarEntry ustawiają atime i ctime tylko wtedy, gdy:
- Wpis jest odczytywany z archiwum tar, który zawiera już te pola.
- Użytkownik jawnie ustawił je przy użyciu odpowiednich właściwości.
Zachowanie TarEntry.ModificationTime pozostaje niezmienione. Jest inicjowany na DateTime.UtcNow dla wpisów tar utworzonych za pomocą konstruktora, a używa czasu modyfikacji pliku dla wpisów utworzonych na podstawie plików.
Typ zmiany przełamującej
Jest to zmiana zachowania.
Przyczyna zmiany
Ta zmiana została wprowadzona w celu zapewnienia lepszej zgodności z innymi czytnikami tar oraz poprawy możliwości konwersji plików tar w dwie strony bez ich modyfikacji.
Zalecana akcja
Nie jest wymagana żadna akcja dla większości użytkowników — większość archiwów nie używa tych sygnatur czasowych.
Jeśli chcesz ustawić te pola, możesz użyć następujących interfejsów API:
- Dla
GnuTarEntry: Użyj właściwości GnuTarEntry.AccessTime i GnuTarEntry.ChangeTime. - W przypadku
PaxTarEntry: użyj konstruktora, który akceptuje atrybuty rozszerzone: PaxTarEntry(TarEntryType, String, IEnumerable<KeyValuePair<String,String>>).
Należy jednak pamiętać, że ustawienie tych pól powoduje utworzenie pliku tar, który nie jest czytelny dla wielu klientów tar.