private string ConstruirString(char [] caracteres, DetalleEstructura detalleEstructura) { string detalle = string.Empty; for (int i = detalleEstructura.PosicionInicial - 1; i <= detalleEstructura.PosicionFinal - 1; i++) { detalle += caracteres[i]; } return(detalle); }
// COD_CLIENTE PI: 1, PF: 2 // COD_PROD PI: 17, PF: 18 // NUM_CUENTA: PI: 31, PF: 39 // NUM_CHEQUE: PI: 46, PF: 51 // COD_SEG: PI: 61 PF: 66 public void ProcesarArchivo() { DetalleEstructura detalle1 = new DetalleEstructura("COD_CLIENTE", 1, 2); DetalleEstructura detalle2 = new DetalleEstructura("COD_PROD", 11, 13); DetalleEstructura detalle3 = new DetalleEstructura("NUM_CUENTA", 20, 28); DetalleEstructura detalle4 = new DetalleEstructura("NUM_CHEQUE", 32, 37); DetalleEstructura detalle5 = new DetalleEstructura("COD_SEG", 41, 46); string path = @"C:\Users\ateho\Desktop\ArchivoPruebaCargueBase.txt"; #region PrimerFichero string pathRE = $@"C:\Users\ateho\Desktop\RE_{ConstruirFechaHora()}.txt"; string pathPR = $@"C:\Users\ateho\Desktop\PR_{ConstruirFechaHora()}.txt"; string[] lineasArchivo = File.ReadAllLines(path); FileStream respuesta = File.Create(pathRE); FileStream produccion = File.Create(pathPR); UTF8Encoding utf8 = new UTF8Encoding(); foreach (var linea in lineasArchivo) { char[] caracteres = linea.ToCharArray(); string codigoCliente = ConstruirString(caracteres, detalle1); string codigoProducto = ConstruirString(caracteres, detalle2); string numeroCuenta = ConstruirString(caracteres, detalle3); string numeroCheque = ConstruirString(caracteres, detalle4); string codSeguridad = ConstruirString(caracteres, detalle5); string codigoSeguridadCalculado = ConstruirCodigoSeguridadCalculado(); Console.WriteLine($"{codigoCliente};{numeroCuenta};{numeroCheque};{codSeguridad};{codigoSeguridadCalculado}"); string informacionLinea = $"{codigoCliente};{numeroCuenta};{numeroCheque};{codSeguridad};{codigoSeguridadCalculado}\r\n"; byte[] informacion = utf8.GetBytes(informacionLinea); try { respuesta.Write(informacion, 0, informacion.Length); } catch (ArgumentNullException e) { Console.WriteLine($"El contenido de la información a escribir es nula {e}"); } catch (ArgumentException e) { Console.WriteLine($"Linea fuera de rango {e}"); } catch (IOException e) { Console.WriteLine($"Error de entrada y salida {e}"); } catch (NotSupportedException e) { Console.WriteLine($"Escritura no permitida {e}"); } } #endregion Console.WriteLine("segundo fichero---------------------------------------------------------------------"); #region SegundoFichero string nombreCliente = "Carmen"; string direccionCliente = "Calle 27 # 7 - 68"; string descripcionProducto = "Alcohol 70º 100ml"; string codigoProductoDefinido = "510"; string[] productosEstructura = { "510", "610" }; string FechaGeneracion = DateTime.Now.ToShortDateString(); foreach (var linea in lineasArchivo) { char[] caracteres = linea.ToCharArray(); string codigoProducto = ConstruirString(caracteres, detalle2); bool existe = false; foreach (var producto in productosEstructura) { if (existe == false) { if (codigoProducto == producto) { existe = true; } } } if (!existe) { Console.WriteLine("Codigo de producto no coincide con la configuración definida"); } else { string codigoCliente = ConstruirString(caracteres, detalle1); string numeroCuenta = ConstruirString(caracteres, detalle3); string numeroCheque = ConstruirString(caracteres, detalle4); string codSeguridad = ConstruirString(caracteres, detalle5); string codigoSeguridadCalculado = ConstruirCodigoSeguridadCalculado(); Console.WriteLine($"{codigoCliente};{nombreCliente};{direccionCliente};{codigoProducto};{descripcionProducto};{numeroCuenta};{numeroCheque};{codSeguridad};{codigoSeguridadCalculado};{FechaGeneracion}"); string informacionLinea = $"{codigoCliente};{nombreCliente};{direccionCliente};{codigoProducto};{descripcionProducto};{numeroCuenta};{numeroCheque};{codSeguridad};{codigoSeguridadCalculado};{FechaGeneracion}\r\n"; byte[] informacion = utf8.GetBytes(informacionLinea); try { produccion.Write(informacion, 0, informacion.Length); } catch (ArgumentNullException e) { Console.WriteLine($"El contenido de la información a escribir es nula {e}"); } catch (ArgumentException e) { Console.WriteLine($"Linea fuera de rango {e}"); } catch (IOException e) { Console.WriteLine($"Error de entrada y salida {e}"); } catch (NotSupportedException e) { Console.WriteLine($"Escritura no permitida {e}"); } } } #endregion }