IsolatedStorageFile 클래스

2013-12-13

격리된 저장소 영역을 나타내며 파일 및 디렉터리가 들어 있습니다.

System.Object
  System.IO.IsolatedStorage.IsolatedStorageFile

Namespace:  System.IO.IsolatedStorage
어셈블리:  mscorlib(mscorlib.dll)

public sealed class IsolatedStorageFile : IDisposable

IsolatedStorageFile 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 속성AvailableFreeSpace격리된 저장소의 사용 가능한 공간을 나타내는 값을 가져옵니다.
Public 속성Quota격리된 저장소에 사용할 수 있는 공간의 최대 크기를 나타내는 값을 가져옵니다.
맨 위

  이름설명
Public 메서드CopyFile(String, String)새 파일에 기존 파일을 복사합니다.
Public 메서드CopyFile(String, String, Boolean)새 파일에 기존 파일을 복사하고 선택적으로 기존 파일을 덮어씁니다.
Public 메서드CreateDirectory격리된 저장소 범위 내에 디렉터리를 만듭니다.
Public 메서드CreateFile격리된 저장소에 파일을 만듭니다.
Public 메서드DeleteDirectory격리된 저장소 범위 내에 있는 디렉터리를 삭제합니다.
Public 메서드DeleteFile격리된 저장소에 있는 파일을 삭제합니다.
Public 메서드DirectoryExists지정한 경로가 격리된 저장소의 기존 디렉터리를 참조하는지 여부를 확인합니다.
Public 메서드DisposeIsolatedStorageFile에서 사용하는 모든 리소스를 해제합니다.
Public 메서드Equals(Object)지정한 Object가 현재 Object와 같은지 확인합니다. (Object에서 상속됨)
Public 메서드FileExists지정한 경로가 격리된 저장소의 기존 파일을 참조하는지 여부를 확인합니다.
Protected 메서드Finalize가비지 수집기에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetCreationTime지정된 파일 또는 디렉터리의 만든 날짜와 시간을 반환합니다.
Public 메서드GetDirectoryNames()격리된 저장소의 루트에 있는 디렉터리를 열거합니다.
Public 메서드GetDirectoryNames(String)격리된 저장소 범위 내의 디렉터리 중 지정된 패턴과 일치하는 디렉터리를 나열합니다.
Public 메서드GetFileNames()격리된 저장소의 루트에 있는 파일의 이름을 가져옵니다.
Public 메서드GetFileNames(String)격리된 저장소 범위 내의 파일 중 지정된 패턴과 일치하는 파일을 나열합니다.
Public 메서드GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드GetLastAccessTime지정된 파일 또는 디렉터리를 마지막으로 액세스한 날짜와 시간을 반환합니다.
Public 메서드GetLastWriteTime지정된 파일 또는 디렉터리를 마지막으로 쓴 날짜와 시간을 반환합니다.
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드정적 멤버GetUserStoreForApplication가상 호스트 도메인에서 호출하는 응용프로그램에서 사용하는 사용자 범위의 격리된 저장소를 가져옵니다.
Public 메서드IncreaseQuotaTo응용프로그램에서 더 많은 할당량(바이트)을 명시적으로 요청하는 데 사용됩니다.
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드MoveDirectory지정된 디렉터리와 그 내용을 새 위치로 이동합니다.
Public 메서드MoveFile지정된 파일을 새 위치로 이동하고 선택적으로 새 파일의 이름을 지정할 수 있습니다.
Public 메서드OpenFile(String, FileMode)지정된 모드로 파일을 엽니다.
Public 메서드OpenFile(String, FileMode, FileAccess)지정된 파일 액세스 권한을 사용하여 지정된 모드로 파일을 엽니다.
Public 메서드OpenFile(String, FileMode, FileAccess, FileShare)읽기, 쓰기 또는 읽기/쓰기 권한과 지정된 공유 옵션을 사용하여 특정 모드로 파일을 엽니다.
Public 메서드Remove격리된 저장소 범위와 모든 콘텐츠를 제거합니다.
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
맨 위

이 클래스는 격리된 저장소를 위해 가상 파일 시스템을 추상화합니다. IsolatedStorageFile 개체는 IsolatedStorageFileStream 개체가 나타내는 파일이 있는 특정한 격리된 저장소의 범위에 해당합니다. 응용프로그램에서는 파일 시스템 내에서 특정 경로를 지정할 필요 없이 격리된 저장소를 사용하여 파일 시스템의 고유한 격리 영역에 데이터를 저장할 수 있습니다.

가상 파일 시스템의 루트는 실제 파일 시스템에서 난독 처리된 사용자별 폴더에 있습니다. 호스트에서 제공하는 고유한 각 식별자는 서로 다른 루트에 매핑되기 때문에 각 응용프로그램마다 고유한 가상 파일 시스템이 할당됩니다. 응용프로그램에서는 자신의 파일 시스템에서 다른 파일 시스템으로 이동할 수 없습니다.

격리된 저장소는 특정 어셈블리의 범위로 지정되므로 대부분의 관리 코드에서는 사용자 코드의 데이터에 액세스할 수 없습니다. 그러나 전적으로 신뢰할 수 있는 관리 코드와 관리 도구는 다른 어셈블리에서 저장소에 액세스할 수 있습니다. 비관리 코드에서는 모든 격리된 저장소에 액세스할 수 있습니다.

다음 예제에서는 대부분의 I/O 작업에 IsolatedStorageFile 개체를 사용하는 방법을 보여 줍니다. 이 샘플 코드를 컴파일하고 실행하는 방법을 보려면 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