Windows Phone, error saving text (Isolatedstorage)

Asked

Viewed 267 times

1

I’m trying to run an app (Windows Phone 8.1) that, for now, will only save a text in a txt file in the phone’s memory and should also read the txt file. When trying 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();

4 answers

0

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

 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();
}

0


By error, it has to do with permissions. Checks whether the class Isolatedstoragefile does not have anything related to permissions. The directory already exists?

For more information, debug the code and see if there’s anything in Inner Exception.

  • Hello @00lenon, I managed to solve (solution as answer). However, can you tell me if I can somehow export this file "doc.txt"? When I say export, it can be to web, or some directory on the network where the device is connected. Thank you

  • Hello @Renesá, no man, I can’t tell you. :(

0

I use this code to manage write and read 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;
    }

0

Try this code, watch Fileaccess.Read, Fileshare.Read:

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

Source: https://stackoverflow.com/a/11371183/194717

Browser other questions tagged

You are not signed in. Login or sign up in order to post.