有没有办法将 CSVHelper CSVWriter 与 Dropbox 一起使用?
Is there a way to use the CSVHelper CSVWriter with Dropbox?
我以前在 Dropbox 中使用过 CSVHelper,但读取的是文件。现在我想写一个文件,发现这不是那么简单。即这段代码,FolderPath 相对于 Dropbox 根文件夹...
using (StreamWriter writer=new StreamWriter(${FolderPath}MyCSVFile.csv"))
using (CsvWriter csv=new CsvWriter(writer,leaveOpen:false)) {csv.WriteRecords(records);}
将路径视为相对于设备根文件夹的路径。用read很容易做到这一点,因为Dropbox ReadFile returns 一个字符串,所以CSVHelper看到的都是一个字符串,但是在这种情况下需要写入一个由Dropbox控制的位置,这意味着必须使用Dropbox客户端.
我找到了解决方法,但根据“分享您的知识问答方式”的建议,我会继续为遇到此问题的其他人回答我自己的问题...
在输入我的问题时,我想“要是有办法将其作为字符串而不是写入设备就好了”,但 CSVHelper doco 仅显示使用 StreamWriter 写入设备。所以我决定只点击一些其他的 Write 场景,并且在那个例子的“写入动态对象”中我发现你可以使用 StringWriter 代替(我不会想在那里看,因为我不是'使用动态对象!)。
所以这是我的工作代码(TempSB2 是一个 StringBuilder,我在整个代码中 re-use)...
TempSB2.Clear();
using (StringWriter writer=new StringWriter())
using (CsvWriter csv=new CsvWriter(writer,leaveOpen:false)) {
csv.WriteRecords(records);
TempSB2.Append(writer.ToString());
}
await DropboxService.WriteFileAsync(DropboxService.StringToStream(TempSB2.ToString()),$"{FolderPath}MyCSVFile.csv");
我以前在 Dropbox 中使用过 CSVHelper,但读取的是文件。现在我想写一个文件,发现这不是那么简单。即这段代码,FolderPath 相对于 Dropbox 根文件夹...
using (StreamWriter writer=new StreamWriter(${FolderPath}MyCSVFile.csv"))
using (CsvWriter csv=new CsvWriter(writer,leaveOpen:false)) {csv.WriteRecords(records);}
将路径视为相对于设备根文件夹的路径。用read很容易做到这一点,因为Dropbox ReadFile returns 一个字符串,所以CSVHelper看到的都是一个字符串,但是在这种情况下需要写入一个由Dropbox控制的位置,这意味着必须使用Dropbox客户端.
我找到了解决方法,但根据“分享您的知识问答方式”的建议,我会继续为遇到此问题的其他人回答我自己的问题...
在输入我的问题时,我想“要是有办法将其作为字符串而不是写入设备就好了”,但 CSVHelper doco 仅显示使用 StreamWriter 写入设备。所以我决定只点击一些其他的 Write 场景,并且在那个例子的“写入动态对象”中我发现你可以使用 StringWriter 代替(我不会想在那里看,因为我不是'使用动态对象!)。
所以这是我的工作代码(TempSB2 是一个 StringBuilder,我在整个代码中 re-use)...
TempSB2.Clear();
using (StringWriter writer=new StringWriter())
using (CsvWriter csv=new CsvWriter(writer,leaveOpen:false)) {
csv.WriteRecords(records);
TempSB2.Append(writer.ToString());
}
await DropboxService.WriteFileAsync(DropboxService.StringToStream(TempSB2.ToString()),$"{FolderPath}MyCSVFile.csv");