﻿using System;
using System.IO;

namespace Naxis.FileStorage.Media
{
    /// <summary>
    /// 文件存储
    /// </summary>
    public interface IStorageFile
    {
        /// <summary>
        /// 获取路径
        /// </summary>
        /// <returns></returns>
        string GetPath();

        /// <summary>
        /// 获取名称
        /// </summary>
        /// <returns></returns>
        string GetName();

        /// <summary>
        /// 获取文件大小
        /// </summary>
        /// <returns></returns>
        long GetSize();

        /// <summary>
        /// 获取最后更新时间
        /// </summary>
        /// <returns></returns>
        DateTime GetLastUpdated();

        /// <summary>
        /// 获取文件类型
        /// </summary>
        /// <returns></returns>
        string GetFileType();

        /// <summary>
        /// 创建一个读取文件的流
        /// </summary>
        Stream OpenRead();

        /// <summary>
        /// 创建一个写文件的流
        /// </summary>
        Stream OpenWrite();

        /// <summary>
        /// 创建一个写文件的流并且截取已存在的内容
        /// </summary>
        Stream CreateFile();
    }
}
