파일 로드 및 저장

Applies to Windows and Windows Phone

파일 선택기를 사용하여 데이터를 로드하고 저장하는 방법을 알아봅니다.

파일을 로드하고 저장하는 이전 기술도 Windows 8.1에서 활성화되어 제대로 작동하지만 Microsoft OneDrive와 함께 클라우드를 포함하도록 업데이트되었습니다. 예를 들어 다른 소스의 데이터를 결합하고 나중에 사용하도록 결과를 저장하는 앱을 작성할 수 있습니다. 또는 사용자가 PC에서 파일을 만들고 휴대용 태블릿에서 실행되는 동일한 앱으로 로드하려고 할 수 있습니다.

참고  이런 유형의 파일 처리는 앱 설정과 같은 적은 데이터를 처리하는 가장 적합한 방법이 아닙니다. Windows 8에서 데이터를 처리하는 더 좋은 방법은 설정 로드 및 저장 항목을 참조하세요. 또한 앱이 다른 앱과 데이터를 공유하려는 경우 참 메뉴를 대신 사용하는 것이 더 나을 수 있습니다.

파일 선택기

파일을 로드하거나 저장하는 UI 컨트롤은 파일 선택기이며 C++, C#, Visual Basic 및 JavaScript 앱에서 사용할 수 있습니다.

빠른 시작: 파일 선택기를 사용하여 파일에 액세스(C#/VB/C++ 및 XAML로 작성한 Windows 런타임 앱), 파일 선택기를 호출한 후 Windows Phone 앱을 계속하는 방법(C#/VB/C++ 및 XAML로 작성한 Windows Phone 스토어 앱)

파일 선택기는 쉽게 사용할 수 있으며 최소한의 설정이 필요합니다. 파일 선택기는 다음과 같이 표시됩니다.

활동 및 진행률 컨트롤

다음은 Photo 디렉터리를 기본 위치로 사용하여 파일을 저장하기 위해 파일 선택기를 여는 간단한 C# 코드 조각입니다.

중요  Windows 8.1에서는 DocumentsLibrary 사용이 변경되었으며, 일반 파일에 이 위치를 사용하지 않는 것이 좋습니다. 자세한 내용은 Windows 스토어 개발자 솔루션 블로그에서 이 게시물을 참조하세요.

참고  Windows Phone 8.1용으로 작성한 앱은 PickSingleFileAsync 대신 PickSingleFileAndContinue를 사용해야 합니다. 이 API를 사용하려면 몇 가지 추가 단계를 수행해야 합니다. 파일 선택기를 호출한 후 Windows Phone 앱을 계속하는 방법(C#/VB/C++ 및 XAML로 작성한 Windows Phone 스토어 앱)을 참조하세요.


 private async void SaveFileButton_Click(object sender, RoutedEventArgs e)
        {
            
            FileSavePicker savePicker = new FileSavePicker();
            savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
            // Dropdown of file types the user can save the file as
            savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" });
            // Default file name if the user does not type one in or select a file to replace
            savePicker.SuggestedFileName = "New Document";
            StorageFile file = await savePicker.PickSaveFileAsync();
            if (file != null)
            {
                // Prevent updates to the remote version of the file until we finish making changes and call CompleteUpdatesAsync.
                CachedFileManager.DeferUpdates(file);
                // write to file
                await FileIO.WriteTextAsync(file, file.Name);
                // Let Windows know that we're finished changing the file so the other app can update the remote version of the file.
                // Completing updates may require Windows to ask for user input.
                FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
                if (status == FileUpdateStatus.Complete)
                {
                   // File was saved
                }
                else
                {
                   // File was not saved
                }
            }
            else
            {
                // File Operation cancelled
            }
        }

전체 코드 샘플은 파일 선택기 샘플(영문)을 참조하세요.

데이터 로드 및 저장

파일 선택기를 사용하여 파일이나 파일을 저장할 위치를 여는 것은 물론, 몇 가지 실제 데이터를 읽거나 써야 합니다. 파일 저장 및 로드는 다음과 같이 FileIO 클래스를 통해 WriteTextAsyncReadTextAsync 메서드를 사용하여 수행됩니다.


try
{
    if (file != null)
    {
        await FileIO.WriteTextAsync(file, "Swift as a shadow");
    }
}
// Handle errors with catch blocks
catch (FileNotFoundException)
{
    // For example, handle file not found
}


파일 처리 코드를 사용하는 경우 예외 처리를 사용하는 것이 중요합니다. 컬렉션이나 다른 데이터 구조에 이미 있는 데이터를 저장하고 로드하려면 직렬화를 사용하여 저장하고 로드할 수 있는 형식으로 데이터를 변환할 수 있습니다. 이 기능의 작동에 대한 데모는 응용 프로그램 저장소에 컬렉션 저장을 참조하세요.

파일 선택기 없이 로드 및 저장

ApplicationsData 클래스는 설정을 저장하고 로드할 위치를 제공하지만(설정 로드 및 저장 참조), 앱의 고유 데이터를 저장하고 로드할 수 있는 위치이기도 합니다. 다음은 일부 텍스트를 저장하고 로드하는 예제입니다. 앱이 앱 시작 간에 정보를 복원해야 하는 경우에 적합합니다. 직렬화를 사용하여 동일한 방식으로 데이터베이스를 XML 데이터로 저장할 수 있습니다.


        public static async void SaveData()
        {
            string myString = "This is the data I want to save";

            // Add:  using Windows.Storage;
            Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

            // Optionally overwrite any existing file with CreationCollisionOption
            StorageFile file = await localFolder.CreateFileAsync("myData.txt", CreationCollisionOption.ReplaceExisting);

            try
            {
                if (file != null)
                {
                    await FileIO.WriteTextAsync(file, myString);
                }
            }
            catch (FileNotFoundException)
            {
                // Error saving data
            }
        }


        public async void LoadData()
        {
            string myString;    
            Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

            try
            {
                StorageFile sampleFile = await localFolder.GetFileAsync("myData.txt");
                myString = await FileIO.ReadTextAsync(sampleFile);
            }

            catch (Exception)
            {
                // No file to load or error loading it
            }

            // Data is now in myString
        }
    }

이러한 메서드는 async 키워드로 선언되므로 호출 시 await를 사용합니다. 자세한 내용은 비동기 프로그래밍(Windows 스토어 앱)을 참조하세요.

관련 항목

iOS 개발자용 항목
iOS 개발자용 리소스
iOS 개발자용 Windows 8 컨트롤
iOS 개발자용 Windows 8 도움말
파일 처리 항목
파일 선택기 샘플
파일 액세스 샘플
빠른 시작: 파일 읽기 및 쓰기(JavaScript)
빠른 시작: 파일 선택기를 사용하여 파일에 액세스(C#/VB/C++ 및 XAML을 사용하는 Windows 스토어 앱)
데이터 및 파일 액세스(C#/VB/C++ 및 XAML을 사용하는 Windows 스토어 앱)

 

 

표시:
© 2015 Microsoft