【问题标题】:Azure blobstorage error when reading file读取文件时出现 Azure Blob 存储错误
【发布时间】:2020-01-06 14:22:55
【问题描述】:

我有一个文件,其中包含我上传到 Azure blobstorage 的文件,该文件如下所示:

TAR-2312;12;;123;1A1195061;231
SSS 2637218;2/9;              
1A1321268;1231195061

我的触发器处理文件,但我得到The filename, directory name, or volume label syntax is incorrect: "path.../TAR-2312;12;;123;1A1195061;231 SSS 2637218;2/9;1A1321268;1231195061

它发生在突出显示的调用中

public static XDocument Convert(Stream blob)
{

   StreamReader reader = new StreamReader(blob);
   var contentOfFile = reader.ReadToEnd();

   ***List<string> lines = File.ReadLines(contentOfFile).Take(2).ToList();***

任何想法为什么会这样以及如何解决它?

【问题讨论】:

    标签: azure azure-blob-storage


    【解决方案1】:

    您收到此错误的原因是因为 File.ReadLines 方法需要文件的路径并且您正在传递文件内容。

    在您的场景中,最好使用String.Split 方法使用换行符分隔符(\n\r\n)分割文件的内容。

    【讨论】:

    • 所以你只需要使用 List lines = contentOfFile.split("\n").ToList();?
    • 是的,类似的。
    • 像魅力一样工作!
    【解决方案2】:

    列表行 = File.ReadLines(contentOfFile).Take(2).ToList();

    File.ReadLines(string path) 需要路径而不是内容。更多细节在这里:ReadLines

    无论您想要达到什么目的,都可以按如下方式完成:

    //Get the reference of container and pass the blob name
    CloudBlob blob = container.GetBlobReference("BlobFileName.txt");
    List<string> lines = new List<string>();
    int countTake = 2;
    using (var stream = blob.OpenRead())
    {
        using (StreamReader reader = new StreamReader(stream))
        {
            int count=0;
            while (!reader.EndOfStream && count!=countTake)
            {
                count++;
                lines.Add(reader.ReadLine());
            }
        }
    }
    

    【讨论】:

    • 哦,那如果要排除中间那一行呢?
    • 您必须编写一些逻辑才能删除。例如,您可能只想读取偶数行的行 - 然后您需要继续跳过 1 等等。
    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 2020-09-20
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多