0

我一直在想办法让程序从路径或 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;
        }
    }
}

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

4

3 回答 3

0

做出肯定的声明:你走在正确的轨道上——但还没有:-)

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

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

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

接下来你需要正确地进行数据库编程,有很多关于如何做到这一点的例子。祝你好运 :-)

于 2013-11-14T23:31:39.177 回答
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();
    }
}
于 2013-11-14T23:34:07.347 回答
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++;
                }
            }
        }
于 2013-11-14T23:27:56.887 回答