using System; namespace DesertPaintLab { public class FileUtils { public FileUtils() { } public static string AppDataPath { get { return System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "DesertPaintLab"); } } public static string FindApplicationResourceDirectory(string dirname) { string dirPath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), dirname); if (System.IO.Directory.Exists(dirPath)) { return dirPath; } dirPath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "data", dirname); if (System.IO.Directory.Exists(dirPath)) { return dirPath; } // try "Resources" in case this is a Mac app bundle dirPath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Resources), "data", dirname); if (System.IO.Directory.Exists(dirPath)) { return dirPath; } // try "Resources" in case this is a Mac app bundle dirPath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Resources), dirname); if (System.IO.Directory.Exists(dirPath)) { return dirPath; } dirPath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Resources", "data", dirname); if (System.IO.Directory.Exists(dirPath)) { // not found return dirPath; } dirPath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Resources", dirname); if (!System.IO.Directory.Exists(dirPath)) { // not found dirPath = null; } return dirPath; } public static string FindApplicationResourceFile(string filename) { // start with the location of the executable string filePath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), filename); if (!System.IO.File.Exists(filePath)) { filePath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "data", filename); } if (!System.IO.File.Exists(filePath)) { // try "Resources/data" in case this is a Mac app bundle filePath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Resources), "data", filename); } if (!System.IO.File.Exists(filePath)) { // try "Resources" in case this is a Mac app bundle filePath = System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Resources), filename); } if (!System.IO.File.Exists(filePath)) { filePath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Resources", "data", filename); } if (!System.IO.File.Exists(filePath)) { filePath = System.IO.Path.Combine( System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Resources", filename); } if (!System.IO.File.Exists(filePath)) { // not found filePath = null; } return filePath; } } }