wangguan
2020-12-23 1e192494412a34d17548834a6aff639202cdfdda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System.IO;
using UnityEngine;
 
namespace Core.Data
{
    public abstract class FileSaver<T> : IDataSaver<T> where T : IDataStore
    {
        protected readonly string m_Filename;
 
        /// <summary>
        /// Instantiate a json saver
        /// </summary>
        /// <param name="filename">The filename (including extension) to use.</param>
        /// <remarks><paramref name="filename" /> is relative to <see cref="Application.persistentDataPath" /></remarks>
        protected FileSaver(string filename)
        {
            m_Filename = GetFinalSaveFilename(filename);
        }
 
        public abstract void Save(T data);
 
        public abstract bool Load(out T data);
 
        public void Delete()
        {
            File.Delete(m_Filename);
        }
 
        public static string GetFinalSaveFilename(string baseFilename)
        {
            return string.Format("{0}/{1}", Application.persistentDataPath, baseFilename);
        }
 
        protected virtual StreamWriter GetWriteStream()
        {
            return new StreamWriter(new FileStream(m_Filename, FileMode.Create));
        }
 
        protected virtual StreamReader GetReadStream()
        {
            return new StreamReader(new FileStream(m_Filename, FileMode.Open));
        }
    }
}