FileStream不保存数组文件



我有数组链接。每个链接都显示一个XML文件。如何通过一次调用迭代每个XML并保存到文件夹中。

GetMesssageAttachments(userId)返回数组6个链接,但当前代码只保存第一个文件。这里怎么了?感谢

public async void SaveXMLMessages(string userId)
{
try
{
if (_responseMessage.IsSuccessStatusCode)
{
string messagesFolder = @"C:XMLMessages";
Directory.CreateDirectory(messagesFolder);
string messageFileName = Path.GetRandomFileName();
string messagesPath = Path.Combine(messagesFolder, messageFileName);
foreach (string xmlMessage in await GetMesssageAttachments(userId))
{
var xmlMessageResponse = await _client.GetAsync(xmlMessage);
using (FileStream fileStream = new FileStream(messagesPath, FileMode.Create))
{
await xmlMessageResponse.Content.CopyToAsync(fileStream);
}
}
}
}
catch (Exception e)
{
throw e.InnerException;
}
}

更新

这是工作。。

public async void SaveXMLMessages(string userId)
{
try
{
if (_responseMessage.IsSuccessStatusCode)
{
string messagesFolder = @"C:XMLMessages";
Directory.CreateDirectory(messagesFolder);
foreach (string xmlMessage in await GetMesssageAttachments(userId))
{
string messageFileName = Path.GetRandomFileName();
string messagesPath = Path.Combine(messagesFolder, messageFileName);
var xmlMessageResponse = await _client.GetAsync(xmlMessage);
using (FileStream fileStream = new FileStream(messagesPath, FileMode.Create))
{
await xmlMessageResponse.Content.CopyToAsync(fileStream);
}
}
}
}
catch (Exception e)
{
throw e.InnerException;
}
}

foreach中使用的messagesPath相同。这意味着在循环中只创建了一个文件

您必须在循环中重新初始化它,如下所示:

foreach (string xmlMessage in await GetMesssageAttachments(userId))
{
string messageFileName = Path.GetRandomFileName();
string messagesPath = Path.Combine(messagesFolder, messageFileName);
var xmlMessageResponse = await _client.GetAsync(xmlMessage);
using (FileStream fileStream = new FileStream(messagesPath, FileMode.Create))
{
await xmlMessageResponse.Content.CopyToAsync(fileStream);
}
}

也许您在每次迭代中都覆盖了文件,请尝试将此块移动到foreach内部:

string messageFileName = Path.GetRandomFileName();
string messagesPath = Path.Combine(messagesFolder, messageFileName);

"thierry v"代码中只有很小的更改,rsb55所说的是正确的。您的代码应该如下所示

foreach (string xmlMessage in await GetMesssageAttachments(userId))
{
string messageFileName = Path.GetRandomFileName();
string messagesPath = Path.Combine(messagesFolder, messageFileName);
var xmlMessageResponse = await _client.GetAsync(xmlMessage);
using (FileStream fileStream = new FileStream(messagesPath, FileMode.Create))
{
await xmlMessageResponse.Content.CopyToAsync(fileStream);
}
}

最新更新