windows phone 7应用程序中的IsolatedStorageException

时间:2013-09-02 08:16:32

标签: c# windows-phone-7 isolatedstorage isolatedstoragefile

我正在尝试读取未在应用程序中创建的文件。

以下是我尝试过的示例:

string FileName = "stops.txt";
string FolderName = "data";
string FilePath = System.IO.Path.Combine(FolderName, FileName);

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(FilePath, FileMode.Open, FileAccess.Read);
using (StreamReader reader = new StreamReader(fileStream))
{
    MessageBox.Show(reader.ReadLine());
}

我抛出“isolatedstorageexception”: link to exception

System.IO.IsolatedStorage.IsolatedStorageException: [IsolatedStorage_Operation_ISFS]
Arguments: 
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.50829.0&File=mscorlib.dll&Key=IsolatedStorage_Operation_ISFS
   at System.IO.IsolatedStorage.IsolatedStorageFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, IsolatedStorageFile isf)
   at System.IO.IsolatedStorage.IsolatedStorageFile.OpenFile(String path, FileMode mode, FileAccess access)
   at HorairesCTS.MainPage.test()
   at HorairesCTS.MainPage..ctor()

有人可以帮我阅读这个文件吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您尝试读取项目中包含的文件,则该文件不会出现在IsolatedStorage中。您需要通过Application.GetResourceStream访问它。

以下是读取本地文本文件的示例代码:

private string ReadTextFile(string filePath)
{
    var resourceStream = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
    Stream myFileStream = resourceStream.Stream;
    StreamReader myStreamReader = new StreamReader(myFileStream);
    return myStreamReader.ReadToEnd();
}

不要忘记在Visual Studio中将Build action设置为Content文件的属性。

ReadTextFile("data/stops.txt")

答案 1 :(得分:0)

如果你想要保存一个对象列表。你可以这样做:

IsolatedStorageFileStream outStream = new IsolatedStorageFileStream("MyData.bin", FileMode.Create, myStore);
        DataContractSerializer ser = new DataContractSerializer(typeof(List<ClsUser>));

        ser.WriteObject(outStream, valutaTyperListe);
        outStream.Close();

获取数据:

IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
if (myStore.FileExists("MyData.bin"))
            {

                IsolatedStorageFileStream inStream = new IsolatedStorageFileStream("MyData.bin", FileMode.Open, myStore);

                DataContractSerializer Serializ = new DataContractSerializer(typeof(List<ClsUser>));
                myUserList = Serializ.ReadObject(inStream) as List<ClsUser>;
                inStream.Close();
            }

类看起来像这样,记得要添加“using System.Runtime.Serialization;”:

[DataContract]
public class ClsUser
{
    string name;
    string lastname;

    public ClsUser(string name, string lastname)
    {
        this.name = name;
        this.lastname = lastname;
    }

     [DataMember]
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

     [DataMember]
    public string Lastname
    {
        get { return lastname; }
        set { lastname = value; }
    }
}