Windows Phone error saving text (IsolatedStorage)

1

I'm trying to run an app (Windows Phone 8.1) which, for now, will only save a text in a txt file in the phone memory and should also read the txt file. When I try to save the text, Visual Studio 2013 returns me the following error message:

  

A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.ni.dll

     An exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.ni.dll but was not handled in user code

     

Additional information: Operation not permitted on IsolatedStorageFileStream.

private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
{
//Objeto que dá acesso ao sistema de armazenamento da aplicação
IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
//FileStream responsável por abrir o arquivo, ou criá-lo se não existir
IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("doc.txt", System.IO.FileMode.OpenOrCreate, armazenamento);
//Leitor de streams que será usado para ler o conteúdo do arquivo
StreamReader leitor = new StreamReader(arquivo);
//Passando para o TextBox o conteúdo do arquivo
txtTexto.Text = leitor.ReadToEnd();
//Liberando o objeto de leitura do arquivo que foi aberto
leitor.Close();
//Liberando o arquivo que foi aberto
arquivo.Close();
}


private void btnSalvar_Click(object sender, RoutedEventArgs e)
{

//Objeto que dá acesso ao sistema de armazenamento da aplicação
IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
//FileStream responsável por abrir o arquivo, ou criá-lo se não existir
IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("doc.txt", System.IO.FileMode.Open, armazenamento);
//Objeto responsável por escrever no arquivo
StreamWriter escritor = new StreamWriter(arquivo);
//Escrevendo no arquivo o conteúdo do TextBox
escritor.Write(txtTexto.Text);
//Liberando o objeto de leitura do arquivo que foi aberto
escritor.Close();
//Liberando o arquivo que foi aberto
arquivo.Close();
    
asked by anonymous 21.07.2014 / 20:53

4 answers

0

By error, it has to do with permissions. Checks if the IsolatedStorageFile class has nothing to do with permissions. Does the directory already exist?

To get more information, debug the code and see if there's anything in Inner Exception.

    
21.07.2014 / 21:50
0

I solved the problem by inserting the code that "reads" the file (.txt) at app startup:

 public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();

        {
            //Objeto que dá acesso ao sistema de armazenamento da aplicação
            IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
            try
            {
                //FileStream responsável por abrir o arquivo, ou criá-lo se não existir
                IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("doc.txt", System.IO.FileMode.OpenOrCreate, armazenamento);
                //Leitor de streams que será usado para ler o conteúdo do arquivo
                StreamReader leitor = new StreamReader(arquivo);
                //Passando para o TextBox o conteúdo do arquivo
                txtTexto.Text = leitor.ReadToEnd();
                //Liberando o objeto de leitura do arquivo que foi aberto
                leitor.Close();
            }
            catch (Exception) { }
        }

    }


    private void btnSalvar_Click(object sender, RoutedEventArgs e)
    {

        //Objeto que dá acesso ao sistema de armazenamento da aplicação
        IsolatedStorageFile armazenamento = IsolatedStorageFile.GetUserStoreForApplication();
        //FileStream responsável por abrir o arquivo, ou criá-lo se não existir
        IsolatedStorageFileStream arquivo = new IsolatedStorageFileStream("doc.txt", System.IO.FileMode.Open, armazenamento);
        //Objeto responsável por escrever no arquivo
        StreamWriter escritor = new StreamWriter(arquivo);
        //Escrevendo no arquivo o conteúdo do TextBox
        escritor.Write(txtTexto.Text);
        //Liberando o objeto de leitura do arquivo que foi aberto
        escritor.Close();
}
    
22.07.2014 / 13:09
0

I use this code to manage recording and reading files in my Apps Store

    public static void SaveFileJson(string fileName, string jsonString, bool append = false)
            {
                using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    using (StreamWriter sw = new StreamWriter(new IsolatedStorageFileStream(fileName, !append ? FileMode.Create : FileMode.Append, store)))
                    {
                        sw.Write(jsonString);
                        sw.Close();
                    }
                }
            }

public static string OpenFileJson(string fileName)
    {
        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (store.FileExists(fileName))
            {
                using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Open, store))
                {
                    long length = stream.Length;
                    byte[] decoded = new byte[length];
                    stream.Read(decoded, 0, (int)length);
                    return Encoding.UTF8.GetString(decoded, 0, (int)length);
                }
            }
        }
        return string.Empty;
    }
    
20.09.2014 / 03:14
0

Try this code, note the FileAccess.Read, FileShare.Read:

using (var isoStream = new IsolatedStorageFileStream("Notes.xml", FileMode.Open, FileAccess.Read, FileShare.Read, isolatedStorage)
{
//...
}

Source: link

    
20.09.2014 / 04:03