27 lines
		
	
	
		
			449 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			449 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package content
 | 
						|
 | 
						|
import (
 | 
						|
	"io"
 | 
						|
	"os"
 | 
						|
)
 | 
						|
 | 
						|
// readerat implements io.ReaderAt in a completely stateless manner by opening
 | 
						|
// the referenced file for each call to ReadAt.
 | 
						|
type readerAt struct {
 | 
						|
	f string
 | 
						|
}
 | 
						|
 | 
						|
func (ra readerAt) ReadAt(p []byte, offset int64) (int, error) {
 | 
						|
	fp, err := os.Open(ra.f)
 | 
						|
	if err != nil {
 | 
						|
		return 0, err
 | 
						|
	}
 | 
						|
	defer fp.Close()
 | 
						|
 | 
						|
	if _, err := fp.Seek(offset, io.SeekStart); err != nil {
 | 
						|
		return 0, err
 | 
						|
	}
 | 
						|
 | 
						|
	return fp.Read(p)
 | 
						|
}
 |