我需要使用 C# 代码开发一项服务,以获取存储在 S3 存储桶中的文件的按日期计数,并通过文件的期限对结果进行分组,并将数据存储到具有以下值的数据库中。 服务日期:运行服务的日期。 COUNT:文件总数。 年龄:(当前日期 - 文件创建日期) 存储桶中保存了 5000 个文件,创建日期是随机的。我需要根据创建日期计算计数和年龄。
假设当前日期为 2016 年 6 月 28 日,2016 年 6 月 27 日创建的文件为 03
2016 年 6 月 26 日创建的文件为 10
25/06/2016 创建的文件是 09 等等。
那么应将以下值插入表中,即
服务日期、年龄、计数
我。 (服务日期)2016 年 6 月 28 日(年龄)1(计数)03 II.(服务日期)2016 年 6 月 28 日(年龄)2(计数)10 III.(服务日期)28/06/2016 (年龄)3 (计数)09
直到到达最早创建的文件。 谁能帮我开发获取计数和年龄的逻辑。
谢谢
最佳答案
我认为亚马逊文件没有创建日期属性。亚马逊文件包含最后修改(服务器端修改)。因此您可以查看以下代码示例以了解如何检索存储桶内的所有文件以及按上次修改进行分组,并使用 linq 按日期进行计数。
BasicAWSCredentials basicCredentials = new BasicAWSCredentials("yoursecretkey", "youraccesskey");
AmazonS3Config configurationClient = new AmazonS3Config();
configurationClient.RegionEndpoint = RegionEndpoint.EUCentral1;// region of your bucket
try
{
using (AmazonS3Client clientConnection = new AmazonS3Client(basicCredentials, configurationClient))
{
S3DirectoryInfo source = new S3DirectoryInfo(clientConnection, "yourbucket");
var query = source.GetFiles("*", System.IO.SearchOption.AllDirectories).GroupBy( fi => fi.LastWriteTime.ToString("dd/MM/yyyy")).Select(group => new { LastDateModify = group.Key, Count = group.Count()}).OrderBy( fi => fi.LastDateModify);
int age = 1;
foreach (var amazonFile in query)
{
Console.WriteLine(string.Format("DATEOFSERVICE:{0} AGE:{1} COUNT:{2}", amazonFile.LastDateModify, age, amazonFile.Count));
age++;
}
}
}
catch (Exception ex)
{
// add the properly handling exception
}
在上面的示例中,我使用了适用于 3.5 net 的 AWSSDK 3.1.6,希望这对您有所帮助。
关于c# - AWS S3 存储桶 |确定文件的日期计数和文件的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38063309/