Mam File
i chcę znaleźć przesunięcie pliku/pozycji, co byłoby fgetpos
w stdio
. Nie mogę go znaleźć w http://golang.org/pkg/io/. Czy muszę to liczyć samemu, czy istnieje metoda kompilacji?fgetpos dostępne w Go? Chcesz znaleźć File.Position
Odpowiedz
Powinieneś być w stanie wykonać Seek()
na 0 bajtów z bieżącej pozycji, która zwraca wynikową pozycję. Nie jestem w 100% pewna, że wynik jest absolutną pozycją, na którą lecisz, ale oczekiwałbym, że tak się stanie.
To może po prostu zadziałać! Spróbuję, kiedy go potrzebuję. – Joe
Genialny. Całkowicie przegapiłem wartość zwrotu i miałem właśnie się poddać, kiedy uratowałeś mi tyłek. Przetestowane i działa, dzięki! – zupa
Uwaga, to ** nie będzie ** działać dla plików otwartych z flagą 'O_APPEND'. W dokumentacji 'Seek' pojawia się ostrzeżenie o niezdefiniowanym zachowaniu, a więcej szczegółów jest dostępnych tutaj: https://github.com/golang/go/issues/12710. Istnieje warunek wyścigu, ale jeśli zapewnione jest blokowanie ('syscall.Flock', więc inne procesy są blokowane oraz niektóre' sync.Mutex' tak, aby inne gorączki w bieżącym procesie były również blokowane) to metoda 'Stat' może zapewnić bieżącą" pozycję " z 'FileInfo.Size'. – drdaeman
Pakiet "io" zawiera kod dla ogólnych operacji wejścia/wyjścia niezwiązanych z plikami. Pliki są powiązane z systemem operacyjnym i znajdują się w pakiecie "os". – Jessta
Tak, ale chciałem to zrobić za pomocą interfejsu (tak się składa, że pisałem własną "klasę", aby dostarczyć fałszywego pliku do testowania dodatkowo). – Joe