// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Unity using UnityEngine; // Standard Library using System; using System.IO; using System.Linq; namespace AWS.GameKit.Common { /// /// This class provides a basic implementation of IFileManager. /// public class FileManager : IFileManager { public string GetGameKitSaveDirectory() { return Path.GetFullPath($"{Application.persistentDataPath}/AWSGameKit"); } public string[] ListFiles(string filePath, string searchPattern) { if (!Directory.Exists(filePath)) { return Array.Empty(); } return Directory.EnumerateFiles(filePath, searchPattern).Select(file => Path.GetFullPath(file)).ToArray(); } public byte[] ReadAllBytes(string filePath) { return File.ReadAllBytes(filePath); } public void WriteAllBytes(string filePath, byte[] data) { // Ensure the parent directory exists - if not, create it now FileInfo fileInfo = new FileInfo(filePath); if (!fileInfo.Directory.Exists) { fileInfo.Directory.Create(); } File.WriteAllBytes(filePath, data); } public long GetFileLastModifiedMilliseconds(string filePath) { FileInfo info = new FileInfo(filePath); DateTimeOffset offset = new DateTimeOffset(info.LastWriteTimeUtc); return offset.ToUnixTimeMilliseconds(); } public void DeleteFile(string filePath) { File.Delete(filePath); } public bool FileExists(string filePath) { return File.Exists(filePath); } } }