如何使用 FolderPicker 保存 CSV 文件
How to save a CSV file using FolderPicker
我在保存 csv 文件时遇到了这个问题。
private async void btnPrint_Click(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FolderPicker();
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".csv");//add any extension to avoid exception
var folder = await picker.PickSingleFolderAsync();
if (folder != null)
{
string strFilename = strBeginDate + "_To_" + EndDate + ".csv";
StorageFile file = await folder.CreateFileAsync("Rpt" + strFilename, CreationCollisionOption.ReplaceExisting);
foreach (var m in FlightData)
{
sb.Append(m.Id + "," + m.Date + "," + m.Price + "," + ...... + "\r\n");
}
await FileIO.AppendLinesAsync(file, new List<string>() { sb.ToString() });
}
}
以上导致错误:
"The filename, directory name, or volume label syntax is
incorrect.\r\n"
我用这个没问题
StorageFile file = await folder.CreateFileAsync("sample.csv", CreationCollisionOption.ReplaceExisting);
由于您在文件名中使用了日期,因此您很可能使用 /
,例如2015/01/01
。这是一个无效的文件名字符,将 /
替换为 -
或完全删除它,您的代码将起作用。
我在 GitHub 上放置了一个 small repro project 来向您展示错误并在行动中修复。
我在保存 csv 文件时遇到了这个问题。
private async void btnPrint_Click(object sender, RoutedEventArgs e)
{
var picker = new Windows.Storage.Pickers.FolderPicker();
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
picker.FileTypeFilter.Add(".csv");//add any extension to avoid exception
var folder = await picker.PickSingleFolderAsync();
if (folder != null)
{
string strFilename = strBeginDate + "_To_" + EndDate + ".csv";
StorageFile file = await folder.CreateFileAsync("Rpt" + strFilename, CreationCollisionOption.ReplaceExisting);
foreach (var m in FlightData)
{
sb.Append(m.Id + "," + m.Date + "," + m.Price + "," + ...... + "\r\n");
}
await FileIO.AppendLinesAsync(file, new List<string>() { sb.ToString() });
}
}
以上导致错误:
"The filename, directory name, or volume label syntax is incorrect.\r\n"
我用这个没问题
StorageFile file = await folder.CreateFileAsync("sample.csv", CreationCollisionOption.ReplaceExisting);
由于您在文件名中使用了日期,因此您很可能使用 /
,例如2015/01/01
。这是一个无效的文件名字符,将 /
替换为 -
或完全删除它,您的代码将起作用。
我在 GitHub 上放置了一个 small repro project 来向您展示错误并在行动中修复。