如何在使用List<>从文件名存储付款记录

本文关键字:文件名 存储 付款 记录 List | 更新日期: 2023-09-27 18:12:03

我编写了一个应用程序来迭代包含x数量文件的目录,并将它们中的每个导入到我的程序中的对象中。我为每个"payment"文件创建了一个类的实例,FileHelpers库将文件的每一行作为新记录读入List。如果文件是"info",它们只是被移动到预设的目录。我想要么追加文件的名称到列表的末尾或只是包括这个作为一个变量?

我需要知道文件的名称,因为x数量文件中的每个"付款"都组合成一个固定宽度的文本文件,以加载到我们的遗留房屋管理系统中。

更多信息:当我创建固定宽度文件时,我需要在List<Payment>加上它们来自的文件的名称中输出每个付款。我不知道该怎么做在FileHelpers/c#世界中:(

如(头文件用于显示-在导出文件中不需要)

PAYMENTID PAYMENTAMOUNT REFERENCE DATE FILETYPE FILENAME
011102010 000000010000 20148366 26102011 PO SHGR1234.PO
011102011 000000020000 20148367 26102011 PP SHGF6585.PP
011102012 000000030000 20148368 26102011 DD SHGI9854.DD

任何想法?下面是一些代码片段…

UPDATE - FileHelpers lib = http://www.filehelpers.com/

UPDATE 2 -用于遍历文本文件并获取付款的代码

public List<SundryPayment> getOAPayments()
        {
            FileHelperEngine engine = new FileHelperEngine(typeof(SundryPayment));
            res = (SundryPayment[])engine.ReadFile(getFilePath());
            foreach (SundryPayment record in res)
            {
                OAPaymentsList.Add(record);
            }
            return OAPaymentsList;
        }

更新2 -加载文件的代码

public List<object> getFiles()
        {
            List<object> obj = new List<object>();
            foreach (string file in files)
            {
                fileExt = Path.GetExtension(file).ToUpper();
                filePath = Path.GetFullPath(file).ToUpper();
                fileName = Path.GetFileNameWithoutExtension(file).ToUpper();
                fullFileName = Path.GetFileName(file).ToUpper();
                fileFund = fileName.Substring(0, 4).ToUpper();
                if (fileExt == ".DIR" || fileExt == ".ERR" || fileExt == ".CRF" || fileExt == ".STA")
                {
                    //Create Info File
                    InfoFile infofile = new InfoFile(filePath);
                    obj.Add(infofile);
                }
                else if (fileExt == ".PO" || fileExt == ".PP" || fileExt == ".TDC" || fileExt == ".TCC" || fileExt == ".DD" || fileExt == ".CSH" || fileExt == ".CQE"
                    || fileExt == ".PZ")
                {
                    if (fileFund == "SHGS" || fileFund == "GGEN")
                    {
                        //Create OA Payment File
                        OAPaymentFile oafile = new OAPaymentFile(filePath);
                        obj.Add(oafile);
                    }
                    else if (fileFund == "SHGF")
                    {
                        InfoFile infofile = new InfoFile(filePath);
                        obj.Add(infofile);
                    }
                    else
                    {
                        //Create AH Payment File
                        AHPaymentFile ahfile = new AHPaymentFile(filePath);
                        //Console.WriteLine("Object Created: {0}", filePath);
                        obj.Add(ahfile);
                    }
                }
            }
            return obj;

        }

更新2 -(原型)代码用于创建固定宽度文件。需要将付款来源的文件名放入该文件

public new void Create()
        {
            string fileToCreate = Path.Combine("''''san''ict''allpay''test''", "cash.txt");
            using (StreamWriter sw = new StreamWriter(fileToCreate))
            {
                foreach (Payment r in ArchousePayments)
                {
                    string archouseref = r.TenancyRef + r.SubAccount + r.CheckDigit;
                    string firstamount = r.AmountPaid.Replace(".", "");
                    string amount = firstamount.PadRight(10, 'x');
                    string transcode = "ALPY";
                    string date = r.PaymentDate.Substring(0, 2) + r.PaymentDate.Substring(3, 2) + r.PaymentDate.Substring(6, 4);
                    string siteref;
                    string comment;
                    sw.WriteLine(archouseref + amount + transcode + date + amount.Length);
                }
            }
        }

如何在使用List<>从文件名存储付款记录

我通过在我的Import类的末尾添加另一个固定宽度记录来计算这一个,然后使用它通过Path.GetFileName()存储文件名。然后,我可以根据需要将其传递到类中。