none
C#做 wp 编程时使用 IsolatedStroageFile 中的 OpenFile 和 CreatFile 。两个方法有什么区别? RRS feed

  • 问题

  • OpenFile 的代码       

    private void creatSimple(string fileName, string fileContent)       

    {

                var appStorage = IsolatedStorageFile.GetUserStoreForApplication();

                {

                    if (!appStorage.FileExists(fileName))

                    {

                        using (var file = appStorage.OpenFile(fileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))

                        {

                            using (var writer = new StreamWriter(fileName))

                            {

                                writer.Write(fileContent);

                            }

                        }

                    }

                }

    }
    CreatFile 的代码
           

    private void creatSimple(string fileName, string fileContent)

            {

                var appStorage = IsolatedStorageFile.GetUserStoreForApplication();

                {

                    if (!appStorage.FileExists(fileName))

                    {

                        using (var file = appStorage.CreateFile(fileName))

                        {

                            using (var writer = new StreamWriter(fileName))

                            {

                                writer.Write(fileContent);

                            }

                        }

                    }

                }

             }

    • 已移动 ThankfulHeart 2012年7月16日 1:50 WP开发 (发件人:Visual C#)
    2012年7月16日 1:01

答案

  • 你好,

    CreateFile方法中是可以新建文件的,但是OpenFile方法在传入的FileMode参数可以设定OpenOrCreate就是如果已经有该文件就直接打开,如果没有的话再重新创建。

    但是基于你贴出的代码,只在手工判断该文件不存在时候调用CreateFiel或OpenFile。这时候两个方法都是新创建文件,所以功能上是一样的,建议使用CreateFile方法,更直接一些。

    • 已标记为答案 Shi Ding 2012年7月23日 17:47
    2012年7月17日 6:05
  • 仁者见仁智者见智了...看你在什么样的场景用什么样的方法!
    • 已标记为答案 Shi Ding 2012年7月23日 17:47
    2012年7月19日 3:09

全部回复

  • 你好,

    CreateFile方法中是可以新建文件的,但是OpenFile方法在传入的FileMode参数可以设定OpenOrCreate就是如果已经有该文件就直接打开,如果没有的话再重新创建。

    但是基于你贴出的代码,只在手工判断该文件不存在时候调用CreateFiel或OpenFile。这时候两个方法都是新创建文件,所以功能上是一样的,建议使用CreateFile方法,更直接一些。

    • 已标记为答案 Shi Ding 2012年7月23日 17:47
    2012年7月17日 6:05
  • 感谢你的回答。

    不过 CreatFile方法 假如 已存在相应的文件 ,是不是会 报错 ?;那用OpenFile不是更方便一点么?

    2012年7月19日 1:25
  • 仁者见仁智者见智了...看你在什么样的场景用什么样的方法!
    • 已标记为答案 Shi Ding 2012年7月23日 17:47
    2012年7月19日 3:09
  • 你好,

    如果已经有相应的文件再用CreateFile方法是会报错的。所以CreateFile之前要判断是否同样的文件名的文件已经存在。

    2012年7月19日 3:47
  • 你好,个人倾向于用OpenFile方法。这两个方法功能上不尽相同,CreateFile只能说是OpenFile的一个小子集,OpenFile的功能不局限于此,单单就FileMode这一项,就已经包含了Create的模式,此外还可以设置权限等,具体可以参考下列文档: 

    openfile方法:http://msdn.microsoft.com/zh-cn/library/cc189969(v=vs.95)

    filemode:http://msdn.microsoft.com/zh-cn/library/system.io.filemode(v=vs.95)

    希望对你有所帮助。

    2012年7月20日 3:22