정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

빠른 시작: Windows Phone 8의 파일 및 폴더 작업

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

StorageFolder 클래스는 로컬 폴더 내의 파일에서 데이터를 읽고 쓰는 데 사용됩니다. 또한 파일을 사용하는 경우 일반적으로 StreamReader 클래스를 사용하여 파일에서 내용을 읽고 씁니다.

이 항목에는 다음 단원이 포함되어 있습니다.

다음 메서드는 일반적으로 StorageFolder을 사용할 때 사용됩니다.

StorageFolder.CreateFolderAsync

로컬 폴더에 디렉터리를 만듭니다.

StorageFolder.CreateFileAsync

비동기 메서드는 로컬 폴더에 파일을 만듭니다.

OpenStreamForReadAsync

지정한 폴더에 있는 파일을 읽기 위한 스트림을 검색합니다.

OpenStreamForWriteAsync

지정한 폴더에 있는 파일을 쓰기 위한 스트림을 검색합니다.

DeleteAsync

폴더를 삭제합니다.

RenameAsync

폴더의 이름을 바꿉니다.

다음 이미지에서는 로컬 폴더에서 텍스트 데이터 읽기 및 쓰기를 보여 주는 샘플 앱을 보여 줍니다.

Quickstart - Files  & Folders

이 UI를 만들려면 MainPage.xaml 파일에서 ContentPanel이라는 Grid를 다음 XAML로 바꿉니다.

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
    <TextBox 
        Name="textBox1" 
        HorizontalAlignment="Left"
        Height="72" 
        Margin="0,22,0,0" 
        TextWrapping="Wrap" 
        Text="Enter text here." 
        VerticalAlignment="Top" Width="456"/>
    <Button 
        Name='btnWrite' 
        Content="Write"
        HorizontalAlignment="Left" 
        Margin="10,94,0,0" 
        VerticalAlignment="Top"
        Width="156" 
        Click="btnWrite_Click"/>
    <TextBlock 
        Name="textBlock1" 
        HorizontalAlignment="Left"
        Margin="10,293,0,0" 
        TextWrapping="Wrap" Text=""
        VerticalAlignment="Top" 
        Height="61" 
        Width="436"/>
    <Button 
        Name="btnRead" 
        Content="Read"
        HorizontalAlignment="Left" 
        Margin="10,374,0,0" 
        VerticalAlignment="Top"
        Width="156" 
        IsEnabled="False"
        Click="btnRead_Click"/>
</Grid>

이 퀵 스타트의 코드를 사용하여 파일 및 폴더 작업을 하려면 다음 지시문을 Windows Phone 앱 템플릿에서 만든 프로젝트에 추가합니다. 이러한 using 문을 MainPage.xaml.cs 파일 맨 위에 배치합니다.


using System.IO;
using System.Threading.Tasks;
using Windows.Storage;


다음 코드에서는 폴더를 만들고 텍스트 파일에 쓰는 방법을 보여 줍니다. DataFile.txt라는 파일이나 DataFolder라는 폴더가 아직 없는 경우 해당 파일과 폴더를 만듭니다. 파일 및 폴더는 CreateFileAsyncCreateFolderAsync 메서드를 사용하여 만듭니다. CreationCollisionOption 열거형은 파일이나 폴더가 이미 있는 경우에 수행할 작업을 지정하는 데 사용됩니다.


private async void btnWrite_Click(object sender, RoutedEventArgs e)
{
    await WriteToFile();

    // Update UI.
    this.btnWrite.IsEnabled = false;
    this.btnRead.IsEnabled = true;
}

private async Task WriteToFile()
{
    // Get the text data from the textbox. 
    byte[] fileBytes = System.Text.Encoding.UTF8.GetBytes(this.textBox1.Text.ToCharArray());

    // Get the local folder.
    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

    // Create a new folder name DataFolder.
    var dataFolder = await local.CreateFolderAsync("DataFolder",
        CreationCollisionOption.OpenIfExists);

    // Create a new file named DataFile.txt.
    var file = await dataFolder.CreateFileAsync("DataFile.txt",
    CreationCollisionOption.ReplaceExisting);

    // Write the data from the textbox.
    using (var s = await file.OpenStreamForWriteAsync())
    {
        s.Write(fileBytes, 0, fileBytes.Length);
    }
}


다음 코드에서는 텍스트 데이터를 읽는 방법을 보여 줍니다.


private async void btnRead_Click(object sender, RoutedEventArgs e)
{
    await ReadFile();

    // Update UI.
    this.btnWrite.IsEnabled = true;
    this.btnRead.IsEnabled = false;
}

private async Task ReadFile()
{
    // Get the local folder.
    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

    if (local != null)
    {
        // Get the DataFolder folder.
        var dataFolder = await local.GetFolderAsync("DataFolder");

        // Get the file.
        var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");

        // Read the data.
        using (StreamReader streamReader = new StreamReader(file))
        {
            this.textBlock1.Text = streamReader.ReadToEnd();
        }

    }
}


표시: