public function init($path)
    {
        $this->storage = app()->make('filesystem');
        $this->path = $path;

        if ($this->exists()) {
            list($this->dir, $this->name) = FileSystem::splitNameFromPath($path);
            $this->lastModified = $this->storage->lastModified($path);

            $metadata = $this->storage->getMetaData($path);

            if (!is_array($metadata)) {
                return $this;
            }

            $this->path = $metadata['path'];

            $this->size = array_key_exists('size', $metadata) ?
                $metadata['size'] : 0;

            $this->type = $metadata['type'];

            if ($this->isFile()) {
                list($this->name, $this->extension) = $this->splitNameAndExtension($this->name);

                try {
                    $this->mimeType = $this->storage->mimeType($this->path);
                } catch (\Exception $ex) {
                    $this->mimeType = self::guessMimeType($this->extension, $this->isFile());
                }
            }
        }

        return $this;
    }