return nil if file doesn't exist on read