如何在C#asp aspx中解析多个文件名并获取相关信息

时间:2013-11-14 23:09:42

标签: c# asp.net

我一直试图找出一种方法让程序从路径或zip文件中读取所有文件作为输入。比读取输入文件夹中的所有文件名并将其拆分,以便我可以获得诸如产品ID和芯片名称之类的信息。然后将pdf文件存储在与产品ID和芯片名称匹配的正确数据库中。

产品ID为KHSA1234C,芯片名称为LK454154。

示例文件名:N3405-H-KAD_K-KHSA1234C-542164143_LK454154_GFK.pdf

public void btnUploadAttach_Click(object sender, EventArgs e)
{
    string fName = this.FileUploadCFC.FileName;
    string path = @"C:\mydir\";
    string result;

    result = Path.GetFileNameWithoutExtension(fName);
    Console.WriteLine("GetFileNameWithoutExtension('{0}') return '{1}'", 
                      fName, result);

    result = Path.GetFileName(path);
    Console.WriteLine("GetFileName('{0}') return '{1}'", path, result);

    string[] sSplitFileName = fName.ToUpper().Split("-".ToCharArray());

    foreach (char file in fName)
    {
        try
        {
            result = sSplitFileName[0] + "_" + sSplitFileName[1] + "-" + 
                     sSplitFileName[2] + "_" + sSplitFileName[3] + "_" +
                     sSplitFileName[4] + "_" + sSplitFileName[5] + "_" +
                     sSplitFileName[6];
        }
        catch
        {
            return;
        }
    }
}

我不知道我是否走在正确的轨道上。 有人能帮我吗?谢谢。

3 个答案:

答案 0 :(得分:0)

首先,为了读取文件夹中的所有文件,您应该使用Directory.GetFiles,然后您将遍历此文件夹的文件。然后你拆分文件名..在这里你去..

using System.IO;
..
..
..
        static void Main(string[] args)
        {
            string[] filePaths = Directory.GetFiles(@"c:\", "*.pdf");
            string result;
            foreach (var file in filePaths)
            {
                result = Path.GetFileNameWithoutExtension(file);
                Console.WriteLine("GetFileNameWithoutExtension('{0}') return '{1}'",
                 file, result);

                var sSplitFileName = file.ToUpper().Split('-');
                var i = 0;
                foreach (var item in sSplitFileName)
                {
                    if (i == 3)
                        //it is product id
                    if (i == 7)
                        //it is chip name

                   i++;
                }
            }
        }

答案 1 :(得分:0)

作出肯定的陈述:你走在正确的轨道上 - 但还没有: - )

首先,您需要从路径中读取文件,但目前不会这样做。

Directory.GetFiles()可能是要搜索的内容。这将返回一个文件名列表string[]数组。

您需要迭代文件并应用拆分,这在我的代码中对我来说没问题。 当您拥有文件的各个部分时,您需要决定要使用的数据库。将文件名拆分为您自己的文件名类可能是明智的,它会公开文件名的每个部分的属性,但这不是必需的。

接下来你需要正确编写db编程,有很多关于如何执行此操作的示例。祝你好运: - )

答案 2 :(得分:0)

假设文件都遵循相同的模式,你可以将所有的分隔符' - '和'_'分开。

class Program
{
    static void Main(string[] args)
    {
        string[] files = Directory.GetFiles(@"C:\mydir\", "*.pdf");
        foreach (var file in files)
        {
            var fileName = Path.GetFileNameWithoutExtension(file);
            var tokens = fileName.Split('-', '_');
            for(int i=0;i<tokens.Length;i++)
            {
                string token = tokens[i];
                Console.WriteLine("{0}-{1}", i, token);
            }
            Console.WriteLine();
        }
        Console.ReadLine();
    }
}