topical media & game development 
  
 
 
 
 
  
    
    
  
 game-xna-intro-XnaShooterUIProject-Helpers-FileHelper.cs / cs
  // Project: XnaGraphicEngine, File: FileHelper.cs
  // Namespace: XnaGraphicEngine.Helpers, Class: FileHelper
  // Path: C:\code\XnaGraphicEngine\Helpers, Author: Abi
  // Code lines: 137, Size of file: 4,13 KB
  // Creation date: 15.10.2006 09:08
  // Last modified: 22.10.2006 18:03
  // Generated with Commenter by abi.exDream.com
  
  #region Using directives
  using Microsoft.Xna.Framework;
  using Microsoft.Xna.Framework.Storage;
  using System;
  using System.Collections.Generic;
  using System.IO;
  using System.Text;
  using System.Threading;
  #endregion
  
  namespace XnaGraphicEngine.Helpers
  {
   <summary>
 File helper class to get text lines, number of text lines, etc.
 Update: Now also supports the XNA Storage classes :)
 
</summary>
        public sealed class FileHelper
        {
                #region Constructor
 
<summary>
 Private constructor to prevent instantiation.
 
</summary>
                private FileHelper()
                {
                } // FileHelper()
                #endregion
                  #region CreateGameContentFile
   <summary>
 Create game content file, will create file if it does not exist.
 Else the existing file is just loaded.
 
</summary>
 <param name="relativeFilename">Relative filename
</param>
 <returns>File stream
</returns>
                public static FileStream CreateGameContentFile(string relativeFilename,
                        bool createNew)
                {
                        string fullPath = Path.Combine(
                                StorageContainer.TitleLocation, relativeFilename);
                        return File.Open(fullPath,
                                createNew ? FileMode.Create : FileMode.OpenOrCreate,
                                FileAccess.Write, FileShare.ReadWrite);
                } // CreateGameContentFile(relativeFilename)
                #endregion
                  #region LoadGameContentFile
   <summary>
 Load game content file, returns null if file was not found.
 
</summary>
 <param name="relativeFilename">Relative filename
</param>
 <returns>File stream
</returns>
                public static FileStream LoadGameContentFile(string relativeFilename)
                {
                        string fullPath = Path.Combine(
                                StorageContainer.TitleLocation, relativeFilename);
                        if (File.Exists(fullPath) == false)
                                return null;
                        else
                                return File.Open(fullPath,
                                        FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                } // LoadGameContentFile(relativeFilename)
                #endregion
                  #region SaveGameContentFile
                  public static FileStream SaveGameContentFile(string relativeFilename)
                  {
                          string fullPath = Path.Combine(
                                  StorageContainer.TitleLocation, relativeFilename);
                          return File.Open(fullPath,
                                  FileMode.Create, FileAccess.Write);
                  } // SaveGameContentFile(relativeFilename)
                  #endregion
  
                  #region OpenOrCreateFileForCurrentPlayer
   <summary>
 XNA user device, asks for the saving location on the Xbox360,
 theirfore remember this device for the time we run the game.
 
</summary>
                static StorageDevice xnaUserDevice = null;
   <summary>
 Xna user device
 
</summary>
 <returns>Storage device
</returns>
                public static StorageDevice XnaUserDevice
                {
                        get
                        {
                                // Create if not created yet.
                                if (xnaUserDevice == null)
                                        xnaUserDevice =
                                                StorageDevice.ShowStorageDeviceGuide(PlayerIndex.One);
                                return xnaUserDevice;
                        } // get
                } // XnaUserDevice
   <summary>
 Open or create file for current player. Basically just creates a
 FileStream using the specified FileMode flag, but on the Xbox360
 we have to ask the user first where he wants to.
 Basically used for the GameSettings and the Log class.
 
</summary>
 <param name="filename">Filename
</param>
 <param name="mode">Mode
</param>
 <param name="access">Access
</param>
 <returns>File stream
</returns>
                public static FileStream OpenFileForCurrentPlayer(
                        string filename, FileMode mode, FileAccess access)
                {
                        // Open a storage container
                        StorageContainer container = XnaUserDevice.OpenContainer("RacingGame");
                          // Add the container path to our filename
                          string fullFilename = Path.Combine(container.Path, filename);
  
                          // Opens or creates the requested file
                          return new FileStream(
                                  fullFilename, mode, access, FileShare.ReadWrite);
                  } // OpenFileForCurrentPlayer(filename, mode, access)
      #endregion
  
                  #region Get text lines
   <summary>
 Returns the number of text lines we got in a file.
 
</summary>
                static public string[] GetLines(string filename)
                {
                        try
                        {
                                StreamReader reader = new StreamReader(
                                        new FileStream(filename, FileMode.Open, FileAccess.Read),
                                        System.
Text.Encoding.UTF8);
                                // Generic version
                                List
<string> lines = new List
<string>();
                                do
                                {
                                        lines.Add(reader.ReadLine());
                                } while (reader.Peek() > -1);
                                reader.Close();
                                return lines.ToArray();
                        } // try
                        catch (FileNotFoundException)
                        {
                                // Failed to read, just return null!
                                return null;
                        } // catch
                        catch (DirectoryNotFoundException)
                        {
                                return null;
                        } // catch
                        catch (IOException)
                        {
                                return null;
                        } // catch
                } // GetLines(filename)
                #endregion
                  #region Create text file
   <summary>
 Create text file
 
</summary>
 <param name="filename">Filename
</param>
 <param name="textForFile">
Text for file
</param>
 <exception cref="IOException">
 Will be thrown if file already exists.
 
</exception>
                public static void CreateTextFile(
                        string filename, string textForFile,
                        Encoding fileEncoding)
                {
                        StreamWriter textWriter = new StreamWriter(
                                new FileStream(filename, FileMode.Create, FileAccess.Write),
                                fileEncoding);//System.
Text.Encoding.UTF8);
                          string[] textLines = StringHelper.SplitMultilineText(textForFile);
                          foreach (string line in textLines)
                                  textWriter.WriteLine(line);
                          textWriter.Close();
                  } // CreateTextFile(filename, textForFile)
                  #endregion
  
                  #region Write Helpers
   <summary>
 Write vector3 to stream
 
</summary>
 <param name="writer">Writer
</param>
 <param name="vec">Vector3
</param>
                public static void WriteVector3(BinaryWriter writer, Vector3 vec)
                {
                        if (writer == null)
                                throw new ArgumentNullException("writer");
                          writer.Write(vec.X);
                          writer.Write(vec.Y);
                          writer.Write(vec.Z);
                  } // WriteVector3(writer, vec)
  
   <summary>
 Write vector4 to stream
 
</summary>
 <param name="writer">Writer
</param>
 <param name="vec">Vector4
</param>
                public static void WriteVector4(BinaryWriter writer, Vector4 vec)
                {
                        if (writer == null)
                                throw new ArgumentNullException("writer");
                          writer.Write(vec.X);
                          writer.Write(vec.Y);
                          writer.Write(vec.Z);
                          writer.Write(vec.W);
                  } // WriteVector4(writer, vec)
  
   <summary>
 Write matrix to stream
 
</summary>
 <param name="writer">Writer
</param>
 <param name="matrix">Matrix
</param>
                public static void WriteMatrix(BinaryWriter writer, Matrix matrix)
                {
                        if (writer == null)
                                throw new ArgumentNullException("writer");
                        
                        writer.Write(matrix.M11);
                        writer.Write(matrix.M12);
                        writer.Write(matrix.M13);
                        writer.Write(matrix.M14);
                        writer.Write(matrix.M21);
                        writer.Write(matrix.M22);
                        writer.Write(matrix.M23);
                        writer.Write(matrix.M24);
                        writer.Write(matrix.M31);
                        writer.Write(matrix.M32);
                        writer.Write(matrix.M33);
                        writer.Write(matrix.M34);
                        writer.Write(matrix.M41);
                        writer.Write(matrix.M42);
                        writer.Write(matrix.M43);
                        writer.Write(matrix.M44);
                } // WriteMatrix(writer, matrix)
                #endregion
                  #region Read Helpers
   <summary>
 Read vector3 from stream
 
</summary>
 <param name="reader">Reader
</param>
 <returns>Vector3
</returns>
                public static Vector3 ReadVector3(BinaryReader reader)
                {
                        if (reader == null)
                                throw new ArgumentNullException("reader");
                          return new Vector3(
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle());
                  } // ReadVector3(reader)
  
   <summary>
 Read vector4 from stream
 
</summary>
 <param name="reader">Reader
</param>
 <returns>Vector4
</returns>
                public static Vector4 ReadVector4(BinaryReader reader)
                {
                        if (reader == null)
                                throw new ArgumentNullException("reader");
                          return new Vector4(
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle());
                  } // ReadVector4(reader)
  
   <summary>
 Read matrix from stream
 
</summary>
 <param name="reader">Reader
</param>
 <returns>Matrix
</returns>
                public static Matrix ReadMatrix(BinaryReader reader)
                {
                        if (reader == null)
                                throw new ArgumentNullException("reader");
                          return new Matrix(
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle(),
                                  reader.ReadSingle());
                  } // ReadMatrix(reader)
                  #endregion
          }        // class FileHelper
  } // namespace XnaGraphicEngine.Helpers
  
  
  
(C) Æliens 
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher. 
In case of other copyright issues, contact the author.