您的位置:首页 > 移动开发

Metro style app 文件、文件夹的选择、文件的保存。

2012-06-28 08:35 351 查看
Metro style app 文件、文件夹的选择、文件的保存。

1、选择单个文件

public async void PickAFile()
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
// Application now has read/write access to the picked file
msg = "Picked photo: " + file.Name;
}
else
{
msg = "Operation cancelled.";
}
}


2、选择多个文件

public async void PickFiles()
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.List;
openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
openPicker.FileTypeFilter.Add("*");
IReadOnlyList<StorageFile> files = await openPicker.PickMultipleFilesAsync();
if (files.Count > 0)
{
StringBuilder output = new StringBuilder("Picked files:\n");
// Application now has read/write access to the picked file(s)
foreach (StorageFile file in files)
{
output.Append(file.Name + "\n");
}
msg = output.ToString();
}
}


3、选择文件夹

public async void PickFolder()
{
FolderPicker folderPicker = new FolderPicker();
folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add(".docx");
folderPicker.FileTypeFilter.Add(".xlsx");
folderPicker.FileTypeFilter.Add(".pptx");
folderPicker.FileTypeFilter.Add(".jpg");
folderPicker.FileTypeFilter.Add(".jpeg");
StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
// Application now has read/write access to all contents in the picked folder (including other sub-folder contents)
StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
msg = "Picked folder: " + folder.Name;
}
else
{
msg = "Operation cancelled.";
}

}


4、保存文件

public async void SaveFile()
{
FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
// 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)
{
msg = "File " + file.Name + " was saved.";
}
else
{
msg = "File " + file.Name + " couldn't be saved.";
}
}
}


下面是C++版本

1、选择单个文件

void BasicHandleCPP::MainPage::PickerAFile_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
FileOpenPicker^ openPicker = ref new FileOpenPicker();
openPicker->ViewMode = PickerViewMode::Thumbnail;
openPicker->SuggestedStartLocation = PickerLocationId::PicturesLibrary;
openPicker->FileTypeFilter->Append(".jpg");
openPicker->FileTypeFilter->Append(".jpeg");
openPicker->FileTypeFilter->Append(".png");

create_task(openPicker->PickSingleFileAsync()).then([this](StorageFile^ file)
{
if (file)
{
Display->Text = "Picked photo: " + file->Name;
}
else
{
Display->Text = "Operation cancelled.";
}
});

}


2、选择多个文件

void BasicHandleCPP::MainPage::PickerFiles_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
FileOpenPicker^ openPicker = ref new FileOpenPicker();
openPicker->ViewMode = PickerViewMode::List;
openPicker->SuggestedStartLocation = PickerLocationId::DocumentsLibrary;
openPicker->FileTypeFilter->Append("*");

create_task(openPicker->PickMultipleFilesAsync()).then([this](IVectorView<StorageFile^>^ files)
{
if (files->Size > 0)
{
String^ output = "Picked files:\n";
std::for_each(begin(files), end(files), [this, &output](StorageFile ^file)
{
output += file->Name + "\n";
});
Display->Text = output;
}
else
{
Display->Text = "Operation cancelled.";
}
});
}


3、选择文件夹

void BasicHandleCPP::MainPage::PickerFolder_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
FolderPicker^ folderPicker = ref new FolderPicker();
folderPicker->SuggestedStartLocation = PickerLocationId::Desktop;

// Users expect to have a filtered view of their folders depending on the scenario.
// For example, when choosing a documents folder, restrict the filetypes to documents for your application.
folderPicker->FileTypeFilter->Append(".docx");
folderPicker->FileTypeFilter->Append(".xlsx");
folderPicker->FileTypeFilter->Append(".pptx");

create_task(folderPicker->PickSingleFolderAsync()).then([this](StorageFolder^ folder)
{
if (folder)
{
Display->Text = "Picked folder: " + folder->Name;
}
else
{
Display->Text = "Operation cancelled.";
}
});
}


4、保存文件

void BasicHandleCPP::MainPage::SaveFile_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
FileSavePicker^ savePicker = ref new FileSavePicker();
savePicker->SuggestedStartLocation = PickerLocationId::DocumentsLibrary;

auto plainTextExtensions = ref new Platform::Collections::Vector<String^>();
plainTextExtensions->Append(".txt");
savePicker->FileTypeChoices->Insert("Plain Text", plainTextExtensions);
savePicker->SuggestedFileName = "New Document";

create_task(savePicker->PickSaveFileAsync()).then([this](StorageFile^ file)
{
if (file != nullptr)
{

// Prevent updates to the remote version of the file until we finish making changes and call CompleteUpdatesAsync.
CachedFileManager::DeferUpdates(file);
// write to file
create_task(FileIO::WriteTextAsync(file, file->Name)).then([this, file]()
{
// 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.
create_task(CachedFileManager::CompleteUpdatesAsync(file)).then([this, file](FileUpdateStatus status)
{
if (status == FileUpdateStatus::Complete)
{
Display->Text = "File " + file->Name + " was saved.";
}
else
{
Display->Text = "File " + file->Name + " couldn't be saved.";
}
});
});
}
else
{
Display->Text = "Operation cancelled.";
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: