导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

IsolatedStorageFile 类

2013/12/13

表示包含文件和目录的独立存储区。

System.Object
  System.IO.IsolatedStorage.IsolatedStorageFile

Namespace:  System.IO.IsolatedStorage
程序集:  mscorlib(位于 mscorlib.dll 中)

public sealed class IsolatedStorageFile : IDisposable

IsolatedStorageFile 类型公开以下成员。

  名称说明
公共属性AvailableFreeSpace获取一个值,该值表示独立存储的可用空间量。
公共属性Quota获取一个值,该值表示独立存储的最大可用空间量。
返回顶部

  名称说明
公共方法CopyFile(String, String)将现有文件复制到新文件。
公共方法CopyFile(String, String, Boolean)将现有文件复制到新文件,还可以覆盖现有文件。
公共方法CreateDirectory在独立存储范围中创建目录。
公共方法CreateFile在独立存储区中创建文件。
公共方法DeleteDirectory删除独立存储范围中的目录。
公共方法DeleteFile删除独立存储区中的文件。
公共方法DirectoryExists确定指定的路径是否指的是独立存储区中的现有目录。
公共方法Dispose释放由 IsolatedStorageFile 使用的所有资源。
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
公共方法FileExists确定指定的路径是否指的是独立存储区中的现有文件。
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetCreationTime返回指定文件或目录的创建日期和时间。
公共方法GetDirectoryNames()枚举独立存储区根处的目录。
公共方法GetDirectoryNames(String)枚举独立存储范围中与给定模式匹配的目录。
公共方法GetFileNames()获取独立存储区根处的文件的名称。
公共方法GetFileNames(String)枚举独立存储范围中与给定模式匹配的文件。
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetLastAccessTime返回上次访问指定文件或目录的日期和时间。
公共方法GetLastWriteTime返回上次写入指定文件或目录的日期和时间。
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法静态成员GetUserStoreForApplication获取从虚拟主机域调用的应用程序所使用的用户范围的独立存储。
公共方法IncreaseQuotaTo使应用程序显式请求一个更大的配额大小,以字节为单位。
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法MoveDirectory将指定的目录及其内容移到新位置。
公共方法MoveFile将指定文件移到新位置,还可以允许您指定新文件名。
公共方法OpenFile(String, FileMode)在指定的模式中打开文件。
公共方法OpenFile(String, FileMode, FileAccess)以指定的文件访问权限在指定的模式下打开文件。
公共方法OpenFile(String, FileMode, FileAccess, FileShare)用读、写或读/写访问权限和指定的共享选项在指定的模式中打开文件。
公共方法Remove移除独立存储区范围及其所有内容。
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
返回顶部

该类使独立存储的虚拟文件系统抽象化。IsolatedStorageFile 对象对应于特定的独立存储范围,在该范围中存在由 IsolatedStorageFileStream 对象表示的文件。应用程序可以使用独立存储将数据保存在文件系统中这些数据自己的独立部分,而不必在文件系统中指定特定的路径。

虚拟文件系统的根位于物理文件系统上经过模糊处理的每用户文件夹中。由主机提供的每个唯一标识符都映射为不同的根,该根为每个应用程序提供它自己的虚拟文件系统。应用程序不能从它自己的文件系统导航到另一个文件系统中。

因为独立存储区在特定程序集的范围内,所以其他大多数托管代码都不能访问您的代码的数据(高度受信任的托管代码和管理工具可以从其他程序集访问存储区)。非托管代码可以访问任何独立存储区。

下面的示例演示如何使用 IsolatedStorageFile 对象执行大多数 I/O 任务。有关如何编译和运行此示例代码的信息,请参见生成具有静态 Windows Phone TextBlock 控件的示例


using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections;
using System.Text;

class Example
{
    public static void Demo(TextBlock outputBlock)
    {
        // Obtain an isolated store for an application.
        try
        {
            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                // Use a StringBuilder to construct output.
                StringBuilder sb = new StringBuilder();

                // Create three directories in the root.
                store.CreateDirectory("MyApp1");
                store.CreateDirectory("MyApp2");
                store.CreateDirectory("MyApp3");

                // Create three subdirectories under MyApp1.
                string subdirectory1 = Path.Combine("MyApp1", "SubDir1");
                string subdirectory2 = Path.Combine("MyApp1", "SubDir2");
                string subdirectory3 = Path.Combine("MyApp1", "SubDir3");
                store.CreateDirectory(subdirectory1);
                store.CreateDirectory(subdirectory2);
                store.CreateDirectory(subdirectory3);

                // Create a file in the root.
                IsolatedStorageFileStream rootFile = store.CreateFile("InTheRoot.txt");
                rootFile.Close();

                // Create a file in a subdirectory.
                IsolatedStorageFileStream subDirFile =
                    store.CreateFile(Path.Combine(subdirectory1, "MyApp1A.txt"));
                subDirFile.Close();

                // Gather file information
                string[] directoriesInTheRoot = store.GetDirectoryNames();

                string[] filesInTheRoot = store.GetFileNames();

                string searchpath = Path.Combine(subdirectory1, "*.*");
                string[] filesInSubDirs = store.GetFileNames(searchpath);

                // Find subdirectories within the MyApp1
                // directory using the multi character '*' wildcard.
                string[] subDirectories =
                    store.GetDirectoryNames(Path.Combine("MyApp1", "*"));

                // List file information

                // List the directories in the root.
                sb.AppendLine("Directories in root:");
                foreach (string dir in directoriesInTheRoot)
                {
                    sb.AppendLine(" - " + dir);
                }
                sb.AppendLine();

                // List the subdirectories under MyApp1.
                sb.AppendLine("Directories under MyApp1:");
                foreach (string sDir in subDirectories)
                {
                    sb.AppendLine(" - " + sDir);
                }
                sb.AppendLine();

                // List files in the root.
                sb.AppendLine("Files in the root:");
                foreach (string fileName in filesInTheRoot)
                {
                    sb.AppendLine(" - " + fileName);
                }
                sb.AppendLine();

                // List files in MyApp1\SubDir1.
                sb.AppendLine(@"Files in MyApp1\SubDir1:");
                foreach (string fileName in filesInSubDirs)
                {
                    sb.AppendLine(" - " + fileName);
                }
                sb.AppendLine();

                // Write to an existing file: MyApp1\SubDir1\MyApp1A.txt

                // Determine if the file exists before writing to it.
                string filePath = Path.Combine(subdirectory1, "MyApp1A.txt");

                if (store.FileExists(filePath))
                {
                    try
                    {
                        using (StreamWriter sw =
                            new StreamWriter(store.OpenFile(filePath,
                                FileMode.Open, FileAccess.Write)))
                        {
                            sw.WriteLine("To do list:");
                            sw.WriteLine("1. Buy supplies.");
                        }
                    }
                    catch (IsolatedStorageException ex)
                    {

                        sb.AppendLine(ex.Message);
                    }
                }

                // Read the contents of the file: MyApp1\SubDir1\MyApp1A.txt
                try
                {
                    using (StreamReader reader =
                        new StreamReader(store.OpenFile(filePath,
                            FileMode.Open, FileAccess.Read)))
                    {
                        string contents = reader.ReadToEnd();
                        sb.AppendLine(filePath + " contents:");
                        sb.AppendLine(contents);
                    }
                }
                catch (IsolatedStorageException ex)
                {

                    sb.AppendLine(ex.Message);
                }

                // Delete a file.
                try
                {
                    if (store.FileExists(filePath))
                    {
                        store.DeleteFile(filePath);
                    }
                }
                catch (IsolatedStorageException ex)
                {
                    sb.AppendLine(ex.Message);
                }

                // Delete a specific directory.
                string dirDelete = Path.Combine("MyApp1", "SubDir3");
                try
                {
                    if (store.DirectoryExists(dirDelete))
                    {
                        store.DeleteDirectory(dirDelete);
                    }
                }
                catch (IsolatedStorageException ex)
                {
                    sb.AppendLine(ex.Message);
                }


                sb.AppendLine();


                // remove the store
                store.Remove();

                sb.AppendLine("Store removed.");

                outputBlock.Text = sb.ToString();
            }
        }
        catch (IsolatedStorageException)
        {
            // TODO: Handle that store was unable to be accessed.

        }
    }
}

// Quota status and increase quota examples
class StoreQuota
{

    // Assumes an event handler for the MouseLeftbuttonUp
    // event is defined for a control named 'IncreaseQuota'
    // In the control's XAML: MouseLeftButtonUp="IncreaseQuota_OnLeftMouseButtonUp"

    // User first selects UI to increase the quota.
    public void IncreaseQuota_OnClick(object sender, MouseEventArgs e)
    {

        // Obtain an isolated store for an application.
        try
        {
            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                // Request 5MB more space in bytes.
                Int64 spaceToAdd = 5242880;
                Int64 curAvail = store.AvailableFreeSpace;

                // If available space is less than
                // what is requested, try to increase.
                if (curAvail < spaceToAdd)
                {

                    // Request more quota space.
                    if (!store.IncreaseQuotaTo(store.Quota + spaceToAdd))
                    {
                        // The user clicked NO to the
                        // host's prompt to approve the quota increase.
                    }
                    else
                    {
                        // The user clicked YES to the
                        // host's prompt to approve the quota increase.
                    }
                }
            }
        }

        catch (IsolatedStorageException)
        {
            // TODO: Handle that store could not be accessed.

        }
    }

    public static void ShowIsoStoreStatus(TextBlock inputBlock)
    {

        // Obtain an isolated store for an application.
        try
        {
            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                string spaceUsed = (store.Quota - store.AvailableFreeSpace).ToString();
                string spaceAvailable = store.AvailableFreeSpace.ToString();
                string curQuota = store.Quota.ToString();
                inputBlock.Text =
                    String.Format("Quota: {0} bytes, Used: {1} bytes, Available: {2} bytes",
                            curQuota, spaceUsed, spaceAvailable);
            }
        }

        catch (IsolatedStorageException)
        {
            inputBlock.Text = "Unable to access store.";

        }
    }

}
// This example's Example.Demo method
// produces the following output:
// -----
// Directories in root:
// - MyApp1
// - MyApp2
// - MyApp3

// Directories under MyApp1:
// - SubDir1
// - SubDir2
// - SubDir3

// Files in the root:
// - InTheRoot.txt

// Files in MyApp1\SubDir1:
// - MyApp1A.txt

// MyApp1\SubDir1\MyApp1A.txt contents:
// To do list:
// 1. Buy supplies.

// Store removed.
// -----



Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2014 Microsoft