topical media & game development 
  
 
 
 
 
  
    
    
  
 game-xna-intro-XnaGraphicEngineChapter7-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 class FileHelper
        {
                #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 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("XnaGraphicEngine");
                          // 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
                        {
                                // Failed to read, just return null!
                                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
          }        // 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.