如何使用 Filehelpers 从 Azure 文件存储读取流
How to read a stream from Azure File Store using Filehelpers
我正在尝试使用 FileHelpers 从 Azure 文件存储中读取一个 csv 文件。这是如何工作的?
我可以连接到 Azure 文件存储并构建对 te 文件的引用。这是通过遍历目录和文件来完成的,在这个例子中,它们被命名为子目录和文件名。
代码:
//connect to storage account
CloudStorageAccount storageAccount = new CloudStorageAccount("link to account and credentials");
//connect to file client
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
//create cloudfileshare to in process
CloudFileShare inprocessShare = fileClient.GetShareReference("inprocess");
//get reference to root directory of inprocess share
CloudFileDirectory inprocessRootDir = inprocessShare.GetRootDirectoryReference();
//get reference to the subdirectory
CloudFileDirectory inprocessDir = inprocessRootDir.GetDirectoryReference(subdirectory);
//get reference to the current file
CloudFile destfile = inprocessDir.GetFileReference(filename);
这用于获取对我要处理的文件的引用。
当我使用 StreamReader 时,我可以使用下面的代码并且它有效:
\open stream
System.IO.Stream filepath = destfile.OpenRead()
\read the file
System.IO.StreamReader file = new System.IO.StreamReader(filepath)
但我想使用 FileHelpers,我尝试了以下方法:
\create async filehelper
FileHelperAsyncEngine fhe = new FileHelperAsyncEngine<MyType>();
using (fhe.BeginReadFile(filepath))
这给出了它只接受字符串作为输入的错误。当我引用 "C:\inprocess\filename.csv" 之类的本地文件时,它起作用了。当我将完整的 URL 放入文件时,出现无法解析连接的错误。我还尝试将 Azure 文件共享映射到本地驱动器号。这可行,但我希望它成为一个云应用程序,因为它适用于 StreamReader,我认为它也适用于 FileHelpers。
您必须使用 FileHelperAsyncEngine
的 BeginReadStream
它使用了 TextReader,因此您需要执行类似
的操作
TextReader tr = new StreamReader(destfile.OpenRead());
using (fhe.BeginReadStream(tr))
{
foreach(var record in fhe)
{
...
}
}
我正在尝试使用 FileHelpers 从 Azure 文件存储中读取一个 csv 文件。这是如何工作的?
我可以连接到 Azure 文件存储并构建对 te 文件的引用。这是通过遍历目录和文件来完成的,在这个例子中,它们被命名为子目录和文件名。
代码:
//connect to storage account
CloudStorageAccount storageAccount = new CloudStorageAccount("link to account and credentials");
//connect to file client
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
//create cloudfileshare to in process
CloudFileShare inprocessShare = fileClient.GetShareReference("inprocess");
//get reference to root directory of inprocess share
CloudFileDirectory inprocessRootDir = inprocessShare.GetRootDirectoryReference();
//get reference to the subdirectory
CloudFileDirectory inprocessDir = inprocessRootDir.GetDirectoryReference(subdirectory);
//get reference to the current file
CloudFile destfile = inprocessDir.GetFileReference(filename);
这用于获取对我要处理的文件的引用。
当我使用 StreamReader 时,我可以使用下面的代码并且它有效:
\open stream
System.IO.Stream filepath = destfile.OpenRead()
\read the file
System.IO.StreamReader file = new System.IO.StreamReader(filepath)
但我想使用 FileHelpers,我尝试了以下方法:
\create async filehelper
FileHelperAsyncEngine fhe = new FileHelperAsyncEngine<MyType>();
using (fhe.BeginReadFile(filepath))
这给出了它只接受字符串作为输入的错误。当我引用 "C:\inprocess\filename.csv" 之类的本地文件时,它起作用了。当我将完整的 URL 放入文件时,出现无法解析连接的错误。我还尝试将 Azure 文件共享映射到本地驱动器号。这可行,但我希望它成为一个云应用程序,因为它适用于 StreamReader,我认为它也适用于 FileHelpers。
您必须使用 FileHelperAsyncEngine
的 BeginReadStream它使用了 TextReader,因此您需要执行类似
的操作TextReader tr = new StreamReader(destfile.OpenRead());
using (fhe.BeginReadStream(tr))
{
foreach(var record in fhe)
{
...
}
}