如何通过部分名称获取文件C#

时间:2019-06-07 15:06:16

标签: c#

我正在做一个读取销售文件的程序,另一个读取库存的程序,所有程序都在csv扩展名中。这两个文件都位于同一位置“ C:\ LOCAL_DOWNLOAD”。

首先,系统在SQL Server中查找状态为“ Listado-Descargado”的表,然后读取销售文件的名称,然后将csv文件修改为另一种格式并保存在另一表中。

除了库存文件,我需要做同样的工作。但是,系统会读取所有csv文件,包括销售文件。是否可以通过部分名称读取csv文件的格式?

销售文件以以下格式开头:“ Poti_L6_2019-06-07” 库存文件以以下格式开头:“ Open25_Stock_Date ..”

我尝试使用getfiles方法来获取库存文件的部分名称。但这不起作用。

此外,我已经检查了流读取器是否读取了csv文件,并且它可以正常工作,但是我需要对所有库存文件进行相同的操作。

  1) //Sales files
     sqlConnection = new SqlConnection(CNN);
                    command = new SqlCommand();

                    appendLog("699 -  Starting StreamREader " + DateTime.Now.ToString("G")+"\r\n");
                    //using (var reader = new StreamReader(@"C:\666.csv"))
                    appendLog("701 - Iniciando transformacion del csv " + DateTime.Now.ToString("G") + "\r\n");
                    appendLog("702 - Transformacion del csv - "+ @LOCAL_DOWNLOAD + "\\" + ds.Tables[0].Rows[i][0].ToString().Replace(" ", "").Replace("/shared", "") + "\r\n");

                    using (var reader = new StreamReader(@"C:\Proyecto SFTP -SQL-Pedidos_Poti\LOCAL_DOWNLOAD\" + ds.Tables[0].Rows[i][0].ToString().Replace(" ", "").Replace("/shared", "")))

                    {

                        appendLog("705 - Before while " + DateTime.Now.ToString("G") + "\r\n");
                        while (!reader.EndOfStream)

                        {
                            Console.WriteLine("ENTRE AL WHILE");
                            try
                            {
                                appendLog("708 -  Starting StreamREader " + DateTime.Now.ToString("G") + "\r\n");
                                string line = reader.ReadLine();
                                Console.WriteLine("Linea es.. " + line);

// ----------------然后在此处更改csv的格式并插入另一个表中。

// Stock Method



 param = new SqlParameter("@SQL", "SELECT Archivo FROM [dbo].[T001_FTP_ESTADO_DOWNLOAD] WHERE [BAJA-SUBA] = 'Listado-Descargado' AND Archivo like '%Open25%'");
            param.Direction = ParameterDirection.Input;
            param.DbType = DbType.String;
            command.Parameters.Add(param);

            adapter = new SqlDataAdapter(command);
            adapter.Fill(ds);

            sqlConnection.Close();

            for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {
                try
                {
                    appendLog("949-Selecciono los que empiezen con 
 OPEN25_STOCK         " + DateTime.Now.ToString("G") + " : " + 
  ds.Tables[0].Rows[i][0].ToString().Replace(" ", "") + " successed" + " 
   / Start \r\n");

                    String Fecha_Stock = "";
                    String Sucursal = "";
                    String Cod_Art = "";
                    String Ean = "";
                    String Stock_Actual = "";
                    String Art_En_Promocion = "";
                    String Fecha_Inicio_Promo = "";
                    String Fecha_Fin_Promo = "";


                    Boolean BFecha_Stock;
                    Boolean B_Sucursal;
                    Boolean BCod_Art;
                    Boolean BEan;
                    Boolean BStock_Actual;
                    Boolean BArt_En_Promocion;
                    Boolean BFecha_Inicio_Promo;
                    Boolean BFecha_Fin_Promo;

                    sqlConnection = new SqlConnection(CNN);
                    command = new SqlCommand();


                    string[] directorio = 
 Directory.GetFiles("C:\\Proyecto SFTP -SQL- 
Pedidos_Poti\\LOCAL_DOWNLOAD\\" + "Open25_Stock");
                    string filecontent = string.Empty;
                    string parcial = "Open25_Stock_L6";


                    foreach (string file in directorio)
                    {

                        //string fileContent = reader.ReadToEnd();
StreamReader sr = new StreamReader("C:\\Proyecto SFTP -SQL- 
Pedidos_Poti\\LOCAL_DOWNLOAD\\");

                        string data = sr.ReadLine();
                        string fileContent = sr.ReadToEnd();

                        Console.WriteLine(data);


                            }

1 个答案:

答案 0 :(得分:1)

您可以使用Directory.GetFiles获得经过过滤的路径列表。

这里是一个例子:

StreamReader

请注意,第二个参数是带有静态文本标识符后的所有内容的通配符的文件名,然后将文件传递到string[] directorio

这将为您提供每个库存文件(销售文件除外)的完整路径的字符串数组。

进一步说明(当您是新用户时)。我认为这段代码将代替您{{1}}