Udostępnij za pośrednictwem


Developing Windows 8 app: Accessing configuration files deployed as part of deployment

While developing your windows 8 app, you may need default configurations. In order to make things more generic, you may choose to keep your configuration in a separate xml to be deployed along with the app. Here, we will see how we can access a file deployed as part of deployment and use it.

In windows 8, access to folder system is provided by api's that are async in nature and 'Task' based. Therefore, we will use 'async' methods for this operation.

        private async Task<SampleData> ReadFromConfigurationFile()

        { 

         try

            {

                //get the package reference

                Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;

                //get installed location detail

                Windows.Storage.StorageFolder storageFolder = package.InstalledLocation;

               // Use serializer class

                XmlSerializer serializer = new XmlSerializer(typeof(SampleData));         

                try

                {

                    //file variable

                    StorageFile sampleFile = null;

                     try

                    {

                       //Get the file

                        sampleFile = await storageFolder.GetFileAsync("ConfigurationStored.xml");

                    }             

                    catch (FileNotFoundException ex)

                    {

                        //handle exception

                    }                 

                  //open file in read mode

                   var file = await sampleFile.OpenAsync(FileAccessMode.Read);   

                   //Read stream         

                   Stream inStream = Task.Run(() => file.OpenRead()).Result;       

                   return (SampleData)serializer.Deserialize(inStream);

                }           

               catch (Exception ex)

                {

                 //handle exception 

                }

            }

           catch (Exception ex)

            {

             //handle exception

            }       

         return null;

        }

 

Note the use of await and async pattern for handling the asynchronous operation.

If you want to modify the default value and write the file back, open file in write mode and after modification save the same at the installed location.

 

More sample on file access can be found at https://code.msdn.microsoft.com/windowsapps/File-access-sample-d723e597.

Comments

  • Anonymous
    February 03, 2012
    Why Stream inStream = Task.Run(() => file.OpenRead()).Result;     and not Stream inStream = await Task.Run(() => file.OpenRead());

  • Anonymous
    February 04, 2012
    You can use await as well, depending upon the need of your application. Here, result property will ensure that data is read and then control is returned.