SND\AstrorEnales_cp 9cfc4d256d - Started working on AssemblyNameFile to make the Factory work on all systems
- Started PsVita RenderSystem and PlatformSystem (still much todo)
2012-08-11 13:06:29 +00:00

126 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using ANX.Framework.NonXNA.PlatformSystem;
using ANX.Framework.Storage;
// This file is part of the ANX.Framework created by the
// "ANX.Framework developer group" and released under the Ms-PL license.
// For details see: http://anxframework.codeplex.com/license
namespace ANX.PlatformSystem.PsVita
{
public class PsVitaStorageContainer : INativeStorageContainer
{
private StorageContainer parent;
private DirectoryInfo baseDirectory;
public PsVitaStorageContainer(StorageContainer setParent)
{
parent = setParent;
string fullPath = Path.Combine(parent.StorageDevice.StoragePath,
parent.DisplayName);
baseDirectory = new DirectoryInfo(fullPath);
// fails silently if directory exists
baseDirectory.Create();
}
#region CreateDirectory
public void CreateDirectory(string directory)
{
baseDirectory.CreateSubdirectory(directory);
}
#endregion
#region CreateFile
public Stream CreateFile(string file)
{
return File.Create(GetTestFullPath(file));
}
#endregion
#region DeleteDirectory
public void DeleteDirectory(string directory)
{
Directory.Delete(GetTestFullPath(directory));
}
#endregion
#region DeleteFile
public void DeleteFile(string file)
{
File.Delete(GetTestFullPath(file));
}
#endregion
#region DirectoryExists
public bool DirectoryExists(string directory)
{
return Directory.Exists(GetTestFullPath(directory));
}
#endregion
#region FileExists
public bool FileExists(string file)
{
return File.Exists(GetTestFullPath(file));
}
#endregion
#region GetDirectoryNames
public string[] GetDirectoryNames(string searchPattern)
{
List<string> dirs = new List<string>();
foreach (DirectoryInfo dir in baseDirectory.EnumerateDirectories(searchPattern))
{
dirs.Add(dir.FullName.Substring(baseDirectory.FullName.Length));
}
return dirs.ToArray();
}
#endregion
#region GetFileNames
public string[] GetFileNames(string searchPattern)
{
List<string> files = new List<string>();
foreach (FileInfo file in baseDirectory.EnumerateFiles(searchPattern))
{
files.Add(file.FullName.Substring(baseDirectory.FullName.Length));
}
return files.ToArray();
}
#endregion
#region OpenFile
public Stream OpenFile(string file, FileMode fileMode, FileAccess fileAccess,
FileShare fileShare)
{
return File.Open(GetTestFullPath(file), fileMode, fileAccess, fileShare);
}
#endregion
#region GetTestFullPath
/// <summary>
/// Returns the full path for the given relative path, and makes
/// some sanity checks.
/// </summary>
private string GetTestFullPath(string relPath)
{
if (String.IsNullOrEmpty(relPath))
throw new ArgumentNullException("path");
string fullPath = Path.Combine(baseDirectory.FullName, relPath);
if (fullPath.StartsWith(baseDirectory.FullName) == false)
throw new InvalidOperationException(
"The given path is not in the selected storage location!");
return fullPath;
}
#endregion
}
}