2012-06-05 22 views
5

File var ve dosya ofset/konumunu bulmak istiyorum, stdio içinde fgetpos olurdu. http://golang.org/pkg/io/'da bulamıyorum. Bunu kendim saymalı mıyım yoksa yöntemde bir yapı mı var?fgetpos Go uygulamasında kullanılabilir mi? Dosyayı bulmak istiyorum.

+0

'io' paketi, dosyalara özgü olmayan genel i/o için kod içerir. Dosyalar işletim sistemi ile ilgilidir ve 'os' paketindedir. – Jessta

+0

Evet ama bunu bir arabirim üzerinden yapmak istedim (olduğu gibi ben de buna ek olarak test için sahte bir dosya sağlamak için kendi 'sınıfım' yazıyordum). – Joe

cevap

10

Geçerli konumdan 0 baytlık bir Seek() yapabilmeniz gerekir; bu, sonuç konumunu döndürür. % 100 emin değilim, sonuçta mutlak pozisyonunuz var, ama olmasını beklerdim.

+0

Bu işe yarayabilir! İhtiyacım olduğunda deneyeceğim. – Joe

+1

Genious. Tamamen dönüş değerini kaçırdım ve kıçımı kurtardığın zaman pes etmek üzereydim. Test edildi ve çalışıyor, teşekkürler! – zupa

+0

Not: Bu **, "O_APPEND" bayrağıyla açılan dosyalar için çalışmaz. Tanımsız davranışla ilgili 'Seek' belgesinde bir uyarı var ve burada daha fazla ayrıntı var: https://github.com/golang/go/issues/12710. Bir yarış durumu vardır, ancak kilitleme sağlanmışsa ('syscall.Flock' diğer işlemler engellenirse artı' sync.Mutex' yani mevcut süreçteki diğer goroutinler de engellenir) o zaman 'Stat' yöntemi geçerli "konum" sağlayabilir. FileInfo.Size ile. – drdaeman

İlgili konular