Jypeli  9
The simple game programming library
WindowsFileManager.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 using System.Collections.Generic;
3 using System.IO;
4 using System.Linq;
5 
6 namespace Jypeli
7 {
8  // TODO: PLatform specific filemanager no longer needed on .NET Core
10  {
11  private string[] pathCandidates;
12 
13  public WindowsFileManager( params string[] pathCandidates )
14  {
15  this.pathCandidates = pathCandidates;
16  }
17 
18  protected override void Initialize()
19  {
20  if ( _currentDir != null )
21  return;
22 
23  for ( int i = 0; i < pathCandidates.Length; i++ )
24  {
26 
27  if ( Directory.Exists( _currentDir ) )
28  return;
29  else
30  {
31  var parent = Directory.GetParent( _currentDir );
32  if ( !parent.Exists ) continue;
33  Directory.CreateDirectory( _currentDir );
34  }
35  }
36  }
37 
38  // TODO: Needed?
39  //public WindowsFileManager()
40  // : this(WindowsLocation.ExePath, Path.Combine(WindowsLocation.MyDocuments, Game.Name))
41  //{
42  //}
43 
49  public override bool Exists( string fileName )
50  {
51  Initialize();
52  MakeAbsolute( ref fileName );
53  return FMAssert( File.Exists, false, false, fileName ) || FMAssert( Directory.Exists, false, false, fileName );
54  }
55 
61  public override bool ChDir( string path )
62  {
63  Initialize();
64  MakeAbsolute( ref path );
65 
66  if ( !FMAssert( Directory.Exists, false, false, path ) )
67  return false;
68 
69  _currentDir = path;
70  return true;
71  }
72 
77  public override void MkDir( string path )
78  {
79  Initialize();
80  MakeAbsolute( ref path );
81  FMAssert( Directory.CreateDirectory, true, null, path );
82  }
83 
89  public override void RmDir( string path )
90  {
91  Initialize();
92  MakeAbsolute( ref path );
93  FMAssert( Directory.Delete, true, path );
94  }
95 
100  public override IList<string> GetFileList()
101  {
102  Initialize();
103  string[] fileList = FMAssert( Directory.GetFiles, false, new string[] { }, _currentDir );
104  return fileList.ToList<string>().AsReadOnly();
105  }
106 
113  public override StorageFile Open( string fileName, bool write )
114  {
115  Initialize();
116  MakeAbsolute( ref fileName );
117  Stream stream = FMAssert( openFileStream, write, null, fileName, write );
118  return new StorageFile( fileName, stream );
119  }
120 
121  private Stream openFileStream(string fileName, bool write)
122  {
123  FileMode mode = write ? FileMode.Create : FileMode.Open;
124  FileAccess access = write ? FileAccess.ReadWrite : FileAccess.Read;
125  return new FileStream( fileName, mode, access );
126  }
127 
133  public override void Delete( string fileName )
134  {
135  Initialize();
136  MakeAbsolute( ref fileName );
137  FMAssert( File.Delete, true, fileName );
138  }
139  }
140  // TODO: Is this still needed?
144  public static class WindowsLocation
145  {
149  public static readonly string MyDocuments = Environment.GetFolderPath( Environment.SpecialFolder.MyDocuments );
150 
154  public static readonly string MyMusic = Environment.GetFolderPath( Environment.SpecialFolder.MyMusic );
155 
159  public static readonly string MyPictures = Environment.GetFolderPath( Environment.SpecialFolder.MyPictures );
160 
164  public static readonly string MyVideos = Environment.GetFolderPath( Environment.SpecialFolder.MyVideos );
165 
169  public static readonly string ExePath = Path.GetDirectoryName( AppDomain.CurrentDomain.BaseDirectory );
170 
174  public static readonly string DataPath = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "Data" );
175 
179  public static readonly string ContentPath = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "Content" );
180  }
181 
182  /*
183  // <summary>
186  public static class LinuxLocation
187  {
191  public static readonly string ExePath = WindowsLocation.ExePath;
192 
196  public static readonly string UserHome = WindowsLocation.MyDocuments;
197 
201  public static readonly string DataPath = WindowsLocation.DataPath;
202 
206  public static readonly string ContentPath = WindowsLocation.DataPath;
207  }
208  */
209 }
Jypeli.StorageFile
Tiedosto.
Definition: StorageFile.cs:17
Jypeli.WindowsFileManager.Initialize
override void Initialize()
Definition: WindowsFileManager.cs:18
Jypeli.WindowsLocation
Usein käytettyjä polkuja Windowsissa.
Definition: WindowsFileManager.cs:145
Jypeli.WindowsFileManager.RmDir
override void RmDir(string path)
Tuhoaa hakemiston. Heittää poikkeuksen jos hakemisto ei ole tyhjä. Ei heitä poikkeusta,...
Definition: WindowsFileManager.cs:89
Jypeli.WindowsLocation.MyPictures
static readonly string MyPictures
Omat kuvatiedostot.
Definition: WindowsFileManager.cs:159
Jypeli
Definition: Automobile.cs:5
Jypeli.WindowsLocation.DataPath
static readonly string DataPath
Ohjelman data-alihakemisto.
Definition: WindowsFileManager.cs:174
Jypeli.WindowsLocation.MyVideos
static readonly string MyVideos
Omat videot.
Definition: WindowsFileManager.cs:164
Jypeli.WindowsFileManager
Definition: WindowsFileManager.cs:10
Jypeli.FileManager.MakeAbsolute
void MakeAbsolute(ref string path)
Definition: NameHelpers.cs:24
Jypeli.WindowsLocation.ExePath
static readonly string ExePath
Ohjelman hakemisto.
Definition: WindowsFileManager.cs:169
Jypeli.WindowsFileManager.MkDir
override void MkDir(string path)
Luo uuden hakemiston.
Definition: WindowsFileManager.cs:77
Jypeli.FileManager.FMAssert
void FMAssert(Action func, bool write)
Definition: Assert.cs:22
Jypeli.WindowsFileManager.Exists
override bool Exists(string fileName)
Kertoo onko tiedosto tai hakemisto olemassa.
Definition: WindowsFileManager.cs:49
Jypeli.WindowsFileManager.ChDir
override bool ChDir(string path)
Vaihtaa työhakemistoa.
Definition: WindowsFileManager.cs:61
Jypeli.WindowsLocation.ContentPath
static readonly string ContentPath
Ohjelman content-alihakemisto.
Definition: WindowsFileManager.cs:179
Jypeli.WindowsFileManager.pathCandidates
string[] pathCandidates
Definition: WindowsFileManager.cs:11
Jypeli.WindowsFileManager.GetFileList
override IList< string > GetFileList()
Antaa listan nykyisessä hakemistossa olevista tiedostoista.
Definition: WindowsFileManager.cs:100
Jypeli.WindowsFileManager.Open
override StorageFile Open(string fileName, bool write)
Avaa tiedoston.
Definition: WindowsFileManager.cs:113
Jypeli.WindowsLocation.MyMusic
static readonly string MyMusic
Oma musiikki.
Definition: WindowsFileManager.cs:154
System
Definition: CFFauxAttributes.cs:29
Jypeli.WindowsFileManager.Delete
override void Delete(string fileName)
Poistaa tiedoston. Ei heitä poikkeusta, jos tiedostoa ei ole olemassa.
Definition: WindowsFileManager.cs:133
Jypeli.WindowsFileManager.openFileStream
Stream openFileStream(string fileName, bool write)
Definition: WindowsFileManager.cs:121
Jypeli.FileManager._currentDir
string _currentDir
Definition: Directories.cs:8
Jypeli.FileManager
Definition: Assert.cs:6
Jypeli.WindowsLocation.MyDocuments
static readonly string MyDocuments
Omat tiedostot.
Definition: WindowsFileManager.cs:149
Jypeli.WindowsFileManager.WindowsFileManager
WindowsFileManager(params string[] pathCandidates)
Definition: WindowsFileManager.cs:13