我正在尝试下载文件列表,但不确定如何继续。 正如主题所说,我正在使用DropNet,这是我尝试下载文件的过程:
获取我的应用程序专用文件夹中的所有文件的列表,并将它们作为字符串存储在List中。
然后尝试以下方法:
foreach (string file in files)
{
_client.GetFileAsync("/" +file,
(response) =>
{
using(FileStream fs = new FileStream(path +file +".gttmp", FileMode.Create))
{
for(int i = 0; i < response.RawBytes.Length; i++)
{
fs.WriteByte(response.RawBytes[i]);
}
fs.Seek(0, SeekOrigin.Begin);
for(int i = 0; i < response.RawBytes.Length; i++)
{
if(response.RawBytes[i] != fs.ReadByte())
{
MessageBox.Show("Error writing data for " +file);
return;
}
}
}
},
(error) =>
{
MessageBox.Show("Could not download file " +file, "Error!");
});
}
不幸的是它似乎根本不起作用。 任何使用DropNet的人都可以向我推荐一些有用的东西吗?
答案 0 :(得分:1)
改为使用同步方法:
foreach (string file in files)
{
var fileBytes = _client.GetFile("/" + file);
using (FileStream fs = new FileStream(path +file + ".gttmp", FileMode.Create))
{
for (int i = 0; i < fileBytes.Length; i++)
{
fs.WriteByte(fileBytes[i]);
}
fs.Seek(0, SeekOrigin.Begin);
for (int i = 0; i < fileBytes.Length; i++)
{
if (fileBytes[i] != fs.ReadByte())
{
MessageBox.Show("Error writing data for " + file);
break;
}
}
}
}
答案 1 :(得分:1)
您异步下载文件的代码工作正常,我尝试了以下方式,并且没有错误地继续下去。
client.GetFileAsync("/novemberrain.mp3",
(response) =>
{
using (FileStream fs = new FileStream(@"D:\novemberrain.mp3", FileMode.Create))
{
for (int i = 0; i < response.RawBytes.Length; i++)
{
fs.WriteByte(response.RawBytes[i]);
}
}
MessageBox.Show("file downloaded");
},
(error) =>
{
MessageBox.Show("error downloading");
});