我正在使用.Net Core 3.0从S3存储桶下载一些文件。
存储桶的结构如下:
my_folder
prod
year
month
day
hour
minute
- joe
- jack
- john
- jacob
我创建了一个循环,成功下载了最近十分钟的文件:
foreach(string objectKey in getObjectKeyNames(dispatch))
{
request1.Key = objectKey;
try
{
using (GetObjectResponse response1 = await s3Client.GetObjectAsync(request1))
{
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);
}
}
catch(Exception e)
{
Console.WriteLine("error");
}
}
我遇到的问题是:
await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);
这将在c:temp中创建与上面所示相同的结构,而我只想下载所有文件,因为每个文件名在c:temp中都是唯一的。因此要明确地说,我只希望C:temp中的所有文件都没有文件夹结构。
objectKey是具有以下格式的文件名
my_folder / prod / 2019/11/21/13/26 / 2019_11_21_13_26_joe.json
文件名将为2019_11_21_13_26_joe.json
有意义的希望
答案 0 :(得分:1)
签出Get a file name from a path in C#。具体来说,Path.getFileName()
:
objectKey = Path.getFileName(objectKey);
await response1.WriteResponseStreamToFileAsync(@"C:\temp\" + objectKey, false, token);